bash/dash 是什么?
shell 命令的解释器,BASH 是 Bourne-Again SHell 的缩写。
dash 比 bash 更轻,更快。但 bash 却更常用
如果一些命令、脚本等总不能正常执行,有可能是 dash 的原因
比如编译 Android 源代码的时候,如果使用 dash,则有可能编译出错,或者编译的系统不能启动
当前使用的解释器
每一条 shell 命令都被某个解释器解释执行,那么系统当前使用的是哪个解释器?
Ubuntu 默认的 shell 是 BASH,也可以自行查看:
$ ls -al /bin/sh
举例:
表示 /bin/sh 软链接到当前目录下的 bash,先理解为 Windows 中的快捷方式吧,这表示当前使用的解释器是 bash
可以观察 /bin 目录中的文件,有 bash 或 dash ,那如果上图的结果为 /bin/sh -> dash,那么就是正在使用 dash 作为解释器
bash/dash 切换
1. dpkg,运行
$ sudo dpkg-reconfigure dash
会看到如下界面:
选择 <Yes>,则会设置 dash 为当前解释器,选择 <No> 则设为 bash
2. 修改 /bin/sh
自己设定 sh 链接到哪
$ sudo ln -fs /bin/bash /bin/sh
上述是链接到 bash,dash 也在 /bin 这个目录下
3. shell 脚本中指定
在看 shell 脚本的时候第一行往往有一句
#!/bin/bash
意思是指定使用 bash 来对这些 shell 命令解释执行
所以当然也可以有 #!/bin/dash,或者其他的解释器
但是如果某个系统里没有你想要的……结果你懂的……