Bash is a Unix shell and it is a command language written by Brian Fox for GNU project as free software. Bash is a command that runs in the text windows, where the users can type the command to perform some actions. Bash can read the command from a file called scripts. The shell’s abbreviation is Bourne-Again Shell, borne shell is replaced by the term of born again.
Bash is more compatible with sh and incorporates the features from Korn shell ksh and the C shell csh. It offers functional improvements over sh for interactive and programming use. Shell is a user Interface to access an Operating System’s services. In general, the operating system shells uses the command line interface (CLI) or graphical user interface (GUI), which depends on the computer’s roles and operations. It is named as a shell because of the layer around the operating system kernel.
A shell account is a user account on a remote server. The shell accounts are used for accessing the File storage, web space, email accounts, newsgroup access and software development inside the university, organization or employer to access their individual instances. The shell account is available at very low cost or free also. The shell account is generally available with the compilers, IRC, clients, background process, FTP, a text editor like services.
Bash on Windows:
Bash on windows is a new feature available on Windows 10. Microsoft teamed up with Ubuntu Linux to build the new infrastructure within Windows. This is called as Windows Subsystem for Linux (WSL). This allows the developers to access a complete set of Ubuntu CLI and utilities. A developer can run the Linux commands on Windows including accessing the local files and drives.
Available Interactive Features:
1. Command name completion – Completion features assist the user in typing the commands at the command line interface by looking for the list of suggestions matches with the entered text or word for incomplete ones. Generally, by pressing the (Tab Key) in a keyboard to complete the text in the terminal, path completion is the completion of absolute or relative file paths.
2. Command argument completion when it is defined.
3. Wildcard completion
4. Command history – A user of a shell may find that he/she is typing something like what they have entered before. If the shell is supporting command history the user can call the previous command into the command line editor by pressing the UP arrow in keyboard and edit it before issuing the command again. Some command line interface supports the auto completion with a user-friendly interface.
5. Directory history, Stack or similar features.
6. Implicit directory change (optional) – A directory/folder name can be used as a command which changes the location to the respective directory.
7. Value prompt – A shell script can show the interactive user for a value.
8. Menu/options prompt – The shell script can prompt the list of choices.
9. Context Sensitive.
Non-Available Interactive Features:
1. Mandatory argument prompt
2. Automatic Suggestions
3. Syntax highlighting
5. Integrated Environment
7. Progress Indicators
8. Context Sensitive help
9. Command builder
1. Exception Handling (via trap)
2. Eval function
5. Search and replace on variable substitutions
6. Arrays and lists
7. Associative array
8. Pseudorandom number generation
String processing is partial support in bash 4.0 (prefix and suffix stripping in variable expansion) and others are
1. Alternative (Brace expansion)
2. Pattern matching (regular expression) built-in
3. Pattern matching (filename globbing)
4. Recursive globbing (generating a file from any level of sub-directories).
2. Command substitution
3. Process substitution (if system supports /dev/fd/<n> or named pipes)
5. TCP/UDP connections as streams
Bash is a support secure (password) prompt read -s and Restricted shell subset as the security features. Some shell script needs to query the user for the sensitive credentials such as password, private digital security keys, encryptions codes, PIN codes or other information related to servers or machines. The sensitive input data should not be echoed back to screen/input devices where it could be collected (gained) left behind after the main unauthorized user/person on the network. Plaintext memory representation should be avoided. It could allow the information to be compromised through swap files, core dumps etc.,
Improvements offered by Bash:
1. Command line interface with editor
2. Unlimited size of command history otherwise known as directory stack
3. Job Control and control on shell executions
4. Shell functions and Aliases
5. Integer arithmetic in any base from 2 to 64
6. An indexed array of unlimited size with array variables