sh其实就是dash
Pan.zs@amax:/bin$ ll | grep sh
-rwxr-xr-x 1 root root 1183448 6月 18 2020 bash*
-rwxr-xr-x 1 root root 129816 7月 19 2019 dash*
lrwxrwxrwx 1 root root 4 6月 18 2020 rbash -> bash*
lrwxrwxrwx 1 root root 4 7月 19 2019 sh -> dash*
lrwxrwxrwx 1 root root 4 1月 6 2021 sh.distrib -> dash*
lrwxrwxrwx 1 root root 7 11月 11 2020 static-sh -> busybox*
可以看到sh是dash的链接
dash(theDebian Almquist Shell)
bash(the GNUBourne-Again Shell).
相比于bash,dash更快、更高效,而且它符合POSIX规范。
Ubuntu在启动的时候会运行很多shell脚本,使用dash可以加快启动速度
但是对于某些指令只有bash支持
相对于bash和dash,source是在父进程即当前shell环境中执行
而sh, bash, dash都是使用一个新的子进程即新的shell环境,结束后不会传到父进程中
这也是为什么在不注销系统的前提下,要使得bashrc里的更改生效要使用source ~/.bashrc 而不是 bash ~/.bashrc
以上四种(sh, bash, dash, source)都不需要文件执行权限
而./xxx则需要文件的执行权限
更多参考:
Ubuntu dash与bash的区别_Hansel的专栏-CSDN博客_bash dash
脚本开头释义 #!/bin/sh /bin/sh #!/bin/bash bash shell #!/bin/csh csh shell #!/usr/bin/env python python