Bash
為什麼我必須使用 sh 從 CD/DVD 介質執行腳本?
我再次遇到了系統的這種奇怪行為。我正在執行 Debian 6.0.6,直接從 CD/DVD 執行腳本時遇到了一些麻煩。最後我不得不使用:
sh /media/cdrom/command
執行它。不得不求助於 sh 有什麼大不了的?!如果腳本依賴 bash 功能怎麼辦?在我看來,真的很煩人,而且安全性並沒有增加多少
有人知道這種行為的充分理由嗎?
PS:如果您嘗試直接使用 ./… 執行它,您會收到一個錯誤,該錯誤不會暗示該問題的任何提示(文件系統掛載 noexec):
bash: ./media/cdrom/command: No such file or directory
如果你將它作為 bash /media/cdrom/command 執行,你會得到同樣的錯誤(我認為安裝選項的驗證由 bash 驗證,即使對於在命令行上作為參數傳遞的命令也是如此。
永久的解決方案是將 exec 添加到 /etc/fstab 中的掛載選項中,例如:
/dev/scd0 /media/cdrom0 udf,iso9660 user,noauto,exec 0 0
文件系統通常
noexec,nosuid
預設安裝以提高安全性。因此,即使您在文件集中看到可執行位,核心也會拒絕執行它。interpreter path/to/script
通過以您請求系統執行的形式呼叫它interpreter
,它反過來接收path/to/script
作為參數並對其進行解析,從而繞過文件系統施加的限制(您可能能夠通過編譯的執行檔實現相同的效果:)/lib/ld-linux.so.1 path/to/executable
。因此,一種選擇是
mount -o exec ...
。您可能希望將選項放入/etc/fstab
- 通常通過將defaults
選項替換為defaults,exec
. 但是,除非您真的知道自己在做什麼,否則我建議您不要這樣做。至於 BASH 的細節,我相信
bash
即使執行為sh
. 而且您絕對可以自由地將其呼叫為bash path/to/script
.