Difference between sh and bash - GeeksforGeeks

21 Feb, 2022
bash and sh are two different shells of the Unix operating system. bash is sh, but with more features and better syntax. Bash is “Bourne Again SHell”, and is an improvement of the sh (original Bourne shell). Shell scripting is scripting in any shell, whereas Bash scripting is scripting specifically for Bash. sh is a shell command-line interpreter of Unix/Unix-like operating systems. sh provides some built-in commands. bash is a superset of sh. Shell is a command-line interface to run commands and shell scripts. Shells come in a variety of flavors, much as operating systems come in a variety of flavors. So, Shell is an interface between the user and the operating system, which helps the user to interact with the device.
#!/bin/sh
#!/bin/bash
Shell is an interface between the user and the operating system.
sh implements the shell interface.
bash is a superset of sh.
sh is also called Bourne Shell. sh is a command programming language described by POSIX standard. It is for UNIX or UNIX-like operating systems. It has many implementations. On most operating systems, sh is implemented by programs like dash, kash, and original Bourne Shell. sh is a Predecessor of bash. /bin/sh is an actual link to main implementations. It is a symlink in most POSIX systems.
sh is not a programming language itself. It is just a specification. sh is a detailed description of the syntax and semantics of the language. It doesn’t include an implementation. sh is written as a replacement for earlier UNIX shells. It’s most of the syntax is the same as the syntax of the ALGOL68 programming language.
We should use sh if we want our language to be compatible with multiple systems. The sh script will most like run on bash also without modifications as bash is backward compatible with sh. sh is the most portable scripting language that works on most POSIX/Unix/Linux systems. One advantage of sh is that it is guaranteed to exist on everything that purports to Unix system. 
bash is also a command programming language like sh. Nowadays, bash is a default login shell on most Linux-based operating systems. It is an extended version of the sh system for GNU replacement for the Bourne shell. We can also say bash is a programming language. Here think like python, we can start python in interactive mode and it behaves like a shell but we can also run python program on any IDE.
bash is a superset of sh. This means that bash supports features of sh and provides more functionality than sh. Although most commands do the same thing as sh. bash is not a POSIX compliant shell. It is a dialect of the POSIX shell language. Bash can run in a text window and allows the user to interpret commands to do various tasks. It has the best and most useful features of the Korn and C shells, such as directory manipulation, job control, aliases, and many others.
Like GNU software bash provides other shells, including a version of csh, Bash is the default shell. bash is intended to be a conformant implementation of the IEEE POSIX Shell and Tools portion of the IEEE POSIX specification (IEEE Standard 1003.1). Like other GNU, bash is also quite portable. This works on any Linux/Unix-based system which has bash in the expected location. bash is more functional than sh in terms of programming and interactive use.
bash
sh     
Bourne Again SHell
SHell
Developed by Brain Fox
Developed by Stephen R. Bourne
Successor of sh
Predecessor of bash
bash is the default SHELL
sh is the not default SHELL
#!/bin/bash
#!/bin/sh
It has more Functionality with up-gradation.
It has less functionality.
supports job controls.
does not support job control.
bash is not a valid POSIX shell.
sh is a valid POSIX shell.
Easy to use
not as easy as bash
less portable than sh.
more portable than bash.
Extended version of language
Original language
Bash scripting is scripting specifically for Bash
Shell scripting is scripting in any shell
supports command history.
does not supports command history.
jivendrasah
Picked
Computer Networks
Difference Between
Computer Networks
Writing code in comment?
Please use ide.geeksforgeeks.org,
generate link and share the link here.
Advanced Encryption Standard (AES)
Intrusion Detection System (IDS)
Introduction and IPv4 Datagram Header
Secure Socket Layer (SSL)
Cryptography and its Types
Difference between BFS and DFS
Class method vs Static method in Python
Difference between var, let and const keywords in JavaScript
Difference Between Method Overloading and Method Overriding in Java
Stack vs Heap Memory Allocation