Something About Bash

Bash

Bash is a command language interpreter that executes commands read from the standard input or from a file. We can use man bash to check the detailed information about bash.

In this article, I am going to talk about how to use bash on Mac.

shell and subshell

To help understand shell and subshell, we can use brew install pstree to install pstree on Mac.

As I use oh my zsh on my Mac terminal, we can use bash command to enter bash. And we can use pstree -s Terminal to show running process in Terminal. Then we can enter a deeper layer of bash(which is so-called subshell) using bash command. After that, we type pstree -s Terminal again, and we can see the difference:

shell_and_subshell

Actually, by using bash command, we can enter any number of deeper layers, and we can use exit command to quit the corresponding layer:

exit_bash

Executes command from a file

We can firstly edit a .sh file:

edit_sh_file

Then we can enter bash and execute command from demo01.sh. There are three ways to excute this file, and we should figure out the differences between these ways.

1. Using source or . command

The first way is to use source demo01.sh or . demo01.sh, which execute demo01.sh in the current shell:

source_sh_file

Note that echo $$ can check the id of current process, and we can easily notice that we execute the .sh file in the currenct shell.

2. Using bash command

The second way is to use bash demo01.sh, which opens a subshell to execute demo01.sh and then quits the subshell:

bash_sh_file

3. Using chmod command

The third way is to use chmod +x demo01.sh command, which can change demo01.sh into an executable file. And then we can run this file directly:

chmod_sh_file

However, by default, the third way still makes use of a subshell.