Ubuntu的 shell 默认安装的是 dash,而不是 bash。
运行以下命令查看 sh 的详细信息,确认 shell 对应的程序是哪个:
ls−al/bin/shdash比bash更轻,更快。但bash却更常用。如果一些命令、脚本等总不能正常执行,有可能是dash的原因。比如编译Android源代码的时候,如果使用dash,则有可能编译出错,或者编译的系统不能启动。通过以下方式可以使shell切换回bash:sudo dpkg-reconfigure dash
然后选择 no 或者 否 ,并确认。
这样做将重新配置 dash,并使其不作为默认的 shell 工具。
也可以直接修改 /bin/sh 链接文件,将其指定到 /bin/bash:
$sudo ln -fs /bin/bash /bin/sh
还有一种解决方法是,在脚本文件中直接指定使用的 shell,而不是指定 sh:
例如使用 #!/bin/bash 或者 #!/bin/dash 而不是#!/bin/sh。
但这样将丧失脚本的通用性,使其在不具备所指定脚本的系统下不能被执行。
运行以下命令查看 sh 的详细信息,确认 shell 对应的程序是哪个:
ls−al/bin/shdash比bash更轻,更快。但bash却更常用。如果一些命令、脚本等总不能正常执行,有可能是dash的原因。比如编译Android源代码的时候,如果使用dash,则有可能编译出错,或者编译的系统不能启动。通过以下方式可以使shell切换回bash:sudo dpkg-reconfigure dash
然后选择 no 或者 否 ,并确认。
这样做将重新配置 dash,并使其不作为默认的 shell 工具。
也可以直接修改 /bin/sh 链接文件,将其指定到 /bin/bash:
$sudo ln -fs /bin/bash /bin/sh
还有一种解决方法是,在脚本文件中直接指定使用的 shell,而不是指定 sh:
例如使用 #!/bin/bash 或者 #!/bin/dash 而不是#!/bin/sh。
但这样将丧失脚本的通用性,使其在不具备所指定脚本的系统下不能被执行。