bash 和 sh 的一点儿区别

PS:不明之处,请君留言,以期共同进步!


1. 发现区别

同样的 shell 脚本,使用 sh xxx.sh 和 bash xxx.sh 调用执行时结果不同,使用 sh 时会输出许多匪夷所思的结果,而使用 bash 时就完全按照预期。

2. 探究区别

(1)sh 是 bash 的软链接,如下:

fxw@fxw-Lenovo:~ $ which sh
/bin/sh
fxw@fxw-Lenovo:~ $ ls -l /bin/sh
lrwxrwxrwx 1 root root 4 7月 12 00:55 /bin/sh -> dash

这么看似乎二者并没有什么区别呀,其实不然。

(2)在一般的 Linux 系统中(例如 Ubuntu )中,使用 sh 调用执行 shell 脚本相当于打开了 bash 的 POSIX 标准模式,这种模式在一定程度上保证了脚本的跨系统性(跨 UNIX 系统),即 /bin/sh 相当于 /bin/bash --posix,所以二者的一个区别就是有没有开启 POSIX 标准模式。

二者还有没有其他的区别呢?等待发现。。。

你可能感兴趣的:(日常笔记)