1. What is the Bourne Shell (sh)?
Think of sh as the oldest grandfather of all shells in Linux/Unix.
- It is very simple , stable , available on almost every Unix system
- It is recommended for scripting because it works everywhere
So imagine a very old Nokia phone not fancy, but never fails. That’s sh.
It doesn’t have fancy features, no colours, no autosuggestions — just works.
2. Why do we still use sh today?
Because:
- Every system understands sh
No matter whether you use Ubuntu, macOS, or a server from 1990
sh will run.- Perfect for scripts
Many system scripts start with:
#!/bin/shThis tells the OS:
➡ “Run this script using the simple, standard shell.”
✔ Most portable
Other shells (bash, zsh, fish) have extra features.
But sh scripts run everywhere.
3. Where is sh located?
Most commonly→
/bin/sh.This file points to the shell program.
4. How does sh behave?
sh is basic:
- No auto-completion, coloured fancy prompts , shortcuts.
- Very small set of features :
- Command execution
- Variable assignment
- Command substitution
- Input / output redirection
- Pipes
- Conditional statements (
if,else) - Loops (
for,while) etc.
It is mainly meant for running scripts, not for interactive use.
5. How to write your first sh script
Let’s write a very simple script:
hello.sh
#!/bin/sh
echo "Hello from sh"Steps to run:
1️⃣ Make file executable
chmod +x hello.sh2️⃣ Run it
./hello.sh✔ Output:
Hello from sh6. When should YOU use sh?
Use sh when:
✔ You're writing a script that should run on ANY machine
✔ You want maximum compatibility
✔ You don’t need advanced features like arrays, functions with names, etc.
Don’t use it for daily terminal usage bash/zsh is better for daily work.To Keep in Mind:
Imagine sh is the grandfather of all shells — simple, slow, stable, and respected by every OS.
When you use #!/bin/sh, you’re basically saying:
👉 “Grandpa, handle this. You never fail.”
Home work (Must go though these Features) For getting a basic Idea :
What can sh do? (Basic commands you should know)
1. Print something
echo "My name is Atul"2. Variables
name="Atul"
echo $name3. Simple if
if [ $name = "Atul" ]; then
echo "Yes, I am Atul"
fi4. Simple loop
for i in 1 2 3; do
echo $i
done5. Running commands
ls
pwd
mkdir test.jpg?table=block&id=29d76b1d-f1a8-8072-a9bf-cc78d1c7d881&cache=v2)
