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,或者其他的解释器

  但是如果某个系统里没有你想要的……结果你懂的……

 

 posted on 2013-01-11 15:08  turtle_fly  阅读(1070)  评论(0编辑  收藏  举报