Shell笔记:shell脚本文件第一行
文件的第一行通常为 #!/bin/bash
或 #!/bin/sh
, #!
用于指定这个脚本文件使用什么解释器来运行,如果在文件第一行指定了解释器,那么直接执行该脚本时就会自动使用文件第一行的解释器来运行该脚本。例如文件test.sh的第一行是 #!/bin/bash
,那么在输入 ./test.sh
后直接回车时(注意,不能直接执行 test.sh
,这种写法会被系统认为你是在执行一个命令,而不是脚本),就会使用 /bin/bash
来运行该脚本。当然,如果输入的是 sh test.sh
,那么第一行的作用就失效了,会使用你手动指定的sh来运行该脚本了。
注: 关于 /bin/bash
和 /bin/sh
的区别,其实 /bin/sh
是 /bin/bash
的软链接,它们对于命令的执行都是一样的。不同之处在于,sh的执行相当于bash的POSIX标准模式,即 /bin/sh
相当于 /bin/bash --posix
,具体的区别体现在sh执行过程中,若出现命令执行失败,则会停止执行脚本,而bash则会跳过失败的命令,继续往后执行。
[root@zjy ~]# ll /bin/sh
lrwxrwxrwx. 1 root root 4 Jan 12 2021 /bin/sh -> bash
[root@zjy ~]# ll /bin/bash
-rwxr-xr-x. 1 root root 1150736 Jan 12 2021 /bin/bash