How to understand difference between Bash scripting an Shell scripting.

Bash script:

A Bash Script is just like a simple text file, consisting of a number of commands that we usually write in a command line. In Linux file systems, they are used for doing repetitive tasks. A Bash Script may contain a number of commands, or it might contain elements like loops, functions, conditional constructs, etc. In simple words, a Bash script is a computer program that is written in the Bash programming language.

Some of the features of Bash are given below:

  • Bash can be invoked by single-character command-line options as well as multi-character command-line options. For example, (-a, -b) is a single-character command-line, and –debugger is a multi-character command-line option.
  • Bash consists of Key bindings.
  • Bash provides one-dimensional arrays with the help of which we can easily manipulate the lists of data.
  • Bash provides control structures. For example, construct structure, etc.

Example:

#!/bin/bash  

myString="nexonhost"
echo "myString: $myString"

Shell script:

Shell is considered as a special user program that provides a platform or interface to users so that they can use operating system services. Users can provide human-readable commands to a shell and then shell convert them into kernel understandable form. A shell is considered a command language interpreter that can execute commands which can be read from input devices like a keyboard.

Some of the features of a Shell are given below:

  • Wildcard substitution in file names (pattern-matching): To carry out commands on a bunch of files by mentioning a pattern to match rather than mentioning an actual file name.
  • Background processing: To make lengthy tasks run in the background in order to free the terminal for concurrent interactive processing.
  • Piping: To combine any number of commands together in order to form a complex program. The output of one program becomes the input of another command.
  • Shell variable substitution: It stores the data in user-defined variables and predefined shell variables.

Now a shell can accept a number of commands through a file, known as a shell script. A shell script contains a number of commands that are executed by a shell.  For example,

Example:

#!/bin/sh

myString="nexonhost"
echo "myString: $myString"

Table of difference between bash script and shell script

Sr. No. Bash script Shell script
01 The bash script is a script that is specifically created for Bash. The shell script is a script that can be executed in any shell.
02 Bash scripting is a subset of shell scripting. Shell scripting is a method to automate tasks as a collection of commands.
03 The bash script is one form of shell script. Shells may be one of  Korn, C shell, Bourne, Bash, etc.
04 Bash is an acronym for Bourne Again SHell and was developed by Brian Fox. Shell is considered the original Unix shell developed by Stephen Bourne.
05 Bash has more features as compared to Shell. Shell has fewer features as compared to Bash.
06 We can use shebang, “#!/bin/sh” if we want to use sh. We can use shebang, “#!/bin/bash” if we want to use Bash if available.
07 Bash is more programmer-friendly as compared to shell. Shell is less programmer-friendly as compared to Bash.

Conclusion:

All Bash scripts are shell scripts, but not all shell scripts are necessarily Bash scripts. The term "shell scripting" covers scripting for various shells, while "Bash scripting" specifically refers to scripting for the Bash shell. Since Bash is commonly available on many Unix-like systems and has a wide range of features, it has become the de facto choice for writing shell scripts for most purposes.