5.1
1. cat/etc/passwd
You can view each user's own default shell program.
2. The default interactive shell starts when the user logs in to a Virtual Console terminal.
But there is another default shell is/bin/sh, which acts as the default shell for those shell scripts that need to be used at startup
Ls-l/bin/sh for viewing
The default system shell (Dash shell) and the default interactive shell (bash shell) are not the same in Ubuntu's release.
You can start the dash shell directly with dash.
Exit exits
5.2 Shell's parent-child relationship
A shell can create another shell (a child shell).
Ps-f a look.
The bash shell is a process (a running program).
Entering bash will create a child shell. Exit exits. Ps-f--forest. You can show nested structures between processes.
5.2.1 Process List
$ pwd; ls Pwd CD/; Echo $BASH _subshell
This allows the command to execute sequentially. This is performed in the current shell.
$ (PWD; LS; echo $BASH _subshell;)//This is performed in a child shell.
() can also be nested, such as PWD; (PWD; (LS; cd/home))
echo $BASH _subshell returns 0, indicating that there is no child shell.
$sleep 300&//Background Run command,& is to put the command into the background mode
Jobs can view background job information
You can also do this by placing the process list in the background.
$ (sleep 2; echo $BASH _subshell; sleep 2;) &
Co-process: You can do two things at the same time, it generates a child shell in the background, and executes commands in this child shell.
Use the Coproc command for co-processing:
$ Coproc Sleep 10
You can also do this:
$coproc MyJob {sleep 10;} That's the equivalent of giving sleep 10 a name. Pay attention to the few spaces
5.3 Understanding the Shell's built-in commands
1. External command: Also known as File System command, there are commands outside of the bash shell. Not part of the shell program.
Typically located in/bin/usr/bin/sbin/usr/sbin.
A child process is created when an external command executes. This operation is called derivation (forking).
For example, PS is an external command, you can use the which and type command to find it
$which PS
$ type-a PS
$ ls-l/bin/ps
2. Built-in command: No sub-process to execute, and Shell is one, do not need to use external program files to run.
(1) such as exit and CD are built-in commands
$type exit
$type CD
Some commands have multiple implementations, such as PWD and Echo, which have both external and built-in commands
#type-a Echo
The which only displays external command files.
Type-a shows two implementations of each command.
Tip: For multiple implementations of the command, the default execution is built-in, if you want to execute an external command can specify the corresponding file is good.
Like what
$PWD//Execution of internal commands
$/BIN/PWD//Execution of EXTERNAL commands
(2) View the command of history execution
$ history//This is built-in command
You can see the previously executed command, preceded by a number that represents the command number. Like, 38.
$!38//indicates execution of 38th order
(3) $!! This is the command that executes the last input.
(4) Command aliases
Alias is also a built-in command
$alias-P//view the currently available aliases
To create your own commands
$alias xcyls= ' Ls-al '
An alias is only valid in the shell process that it is defined in. Changes under ~/.BASHRC can work for all shells
Shell Child shell process sub-processes are affected by environment variables.
The fifth chapter of the Linux command line and Shell script programming Encyclopedia understands the shell