Ubuntu 運行shell腳本存在的"Bug"

1、Ubuntu 93:read : Illegal option -e

2、Ubuntu :set Illegal  option -o pipefail

其實這不是Ubuntu本身運行shell 有缺陷,其實Ubuntu的 shell 默認安裝的是 dash,而不是 bash。dash 比 bash 更輕,更快。但 bash 卻更常用。所以這不是Ubuntu的錯,我們改下就可以啦。

運行這命令看下:

$ ls -al /bin/sh

果然是,

有以下方案改下:

1、我們改下讓他默認是bash

$sudo dpkg-reconfigure dash

然後用鍵盤左右鍵選擇 no 或者 否 ,回車並確認。

再次覈實下,OK了。

2、直接修改 /bin/sh 鏈接文件,將其指定到 /bin/bash

$sudo ln -fs /bin/bash /bin/sh

3、還有一種解決方法是,在腳本文件中直接指定使用的 shell,而不是指定 sh:
例如使用 #!/bin/bash 或者 #!/bin/dash 而不是#!/bin/sh。
但這樣將喪失腳本的通用性,使其在不具備所指定腳本的系統下不能被執行。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章