Linux提供的Shell解析器有以下几种(linux是开源的,不同的人写了不同风格的解释器):
[root@localhost ~]$ cat /etc/shells
/bin/sh
/bin/bash
/sbin/nologin
/usr/bin/sh
/usr/bin/bash
/usr/sbin/nologin
/bin/tcsh
/bin/csh
不同的shell解析器,功能不同,比如csh,符合c语言风格的shell解析器。Centos默认使用的是“/bin/bash”和“/bin/sh”作为shell解析器。“/bin/sh”是“/bin/bash”的软连接,两者等价。
通过“echo $SHELL”命令查看当前解释器
[root@localhost ~]$ echo $SHELL
/bin/bash
在终端中输入:cat /etc/shells等价于:/bin/bash -c ‘cat /etc/shells’
默认/bin/bash必须接收一个脚本作为输入!如果是一条命令,需要加-c (command)
[root@localhost ~]$ /bin/bash -c 'cat /etc/shells'
/bin/sh
/bin/bash
/sbin/nologin
/usr/bin/sh
/usr/bin/bash
/usr/sbin/nologin
/bin/tcsh
/bin/csh
[root@localhost /]$ cd home
[root@localhost home]$ ls
whx
[root@localhost home]$ cd whx
[root@localhost whx]$ ls
Desktop Documents Downloads Music Pictures Public Templates Videos
[root@localhost whx]$ mkdir myshells
[root@localhost whx]$ ll
total 0
drwxr-xr-x. 2 whx whx 6 Aug 13 05:01 Desktop
drwxr-xr-x. 2 whx whx 6 Aug 13 05:01 Documents
drwxr-xr-x. 2 whx whx 6 Aug 13 05:01 Downloads
drwxr-xr-x. 2 whx whx 6 Aug 13 05:01 Music
drwxr-xr-x. 2 root root 6 Oct 28 22:13 myshells
drwxr-xr-x. 2 whx whx 6 Aug 13 05:01 Pictures
drwxr-xr-x. 2 whx whx 6 Aug 13 05:01 Public
drwxr-xr-x. 2 whx whx 6 Aug 13 05:01 Templates
drwxr-xr-x. 2 whx whx 6 Aug 13 05:01 Videos
[root@localhost whx]$ cd myshells
[root@localhost myshells]$ ll
total 0
[root@localhost myshells]$ vim first.sh
[root@localhost myshells]$ ll
total 4
-rw-r--r--. 1 root root 51 Oct 28 22:15 first.sh
[root@localhost myshells]$ bash first.sh
这是shell脚本文件first.sh
[root@localhost myshells]$ sh first.sh
这是shell脚本文件first.sh
first.sh文件内容为:
#!/bin/bash
echo 'first.sh脚本文件执行完毕'
second.sh文件内容为:
#!/bin/bash
b='这是second.sh'
sleep 10s
echo $b
echo 'second.sh脚本文件执行完毕'
third.sh文件内容为:
#!/bin/bash
echo $b
echo 'third.sh脚本文件执行完毕'
虽然linux系统的文件不需要用后缀,但是一般用后缀.sh表明该文件是一个shell脚本文件,方便识别。
[root@localhost myshells]$ bash first.sh
这是shell脚本文件first.sh
[root@localhost myshells]$
特点:
①新开一个bash执行脚本;
②一旦脚本执行完毕,bash自动关闭!
使用pstree查看进程
├─sshd─┬─sshd───bash───bash───sleep
│ └─sshd───bash───pstree
./脚本
特点:
①前提是当前用户对脚本有执行权限,使用当前默认的解释器执行脚本;
②新开一个bash执行脚本;
③一旦脚本执行完毕,bash自动关闭!
添加权限:chmod u+x first.sh
删除权限:chmod u-x first.sh
[root@localhost myshells]$ ll
total 4
-rw-r--r--. 1 root root 51 Oct 28 22:15 first.sh
[root@localhost myshells]$ ./first.sh
-bash: ./first.sh: Permission denied
[root@localhost myshells]$ chmod u+x first.sh
[root@localhost myshells]$ ll
total 4
-rwxr--r--. 1 root root 51 Oct 28 22:15 first.sh
[root@localhost myshells]$ ./first.sh
这是shell脚本文件first.sh
[root@localhost myshells]$
使用pstree查看进程
├─sshd─┬─sshd───bash───second.sh───sleep
│ └─sshd───bash───pstree
[root@localhost myshells]$ . first.sh
这是shell脚本文件first.sh
[root@localhost myshells]$
特点:
①使用当前默认的解释器执行脚本,并不要求当前用户对脚本有执行权限;
②使用当前默认的解释器执行脚本
使用pstree查看进程
├─sshd─┬─sshd───bash───sleep
│ └─sshd───bash───pstree
[root@localhost myshells]$ source first.sh
这是shell脚本文件first.sh
[root@localhost myshells]$
特点:
①使用当前默认的解释器执行脚本,并不要求当前用户对脚本有执行权限;
②使用当前默认的解释器执行脚本
使用pstree查看进程
├─sshd─┬─sshd───bash───sleep
│ └─sshd───bash───pstree