Bash
如何在乾淨的環境中啟動腳本?
我嘗試了以下方法,但似乎不起作用:
$ cat script.sh #!/bin/env -i /bin/sh /bin/env $ script.sh /bin/env: invalid option -- ' ' Try `/bin/env --help' for more information.
這不起作用的原因是因為它被
-i /bin/sh
視為env
. 通常這將是 2 個參數,-i
並且/bin/sh
. 這只是shebang的一個限制。沒有辦法解決它。但是,您仍然可以執行此任務,只是採用不同的方式。
如果您希望此任務由腳本本身執行,而不必執行類似的操作
env -i script.sh
,您可以讓腳本本身重新執行。#!/bin/sh [ -z "$CLEANED" ] && exec /bin/env -i CLEANED=1 /bin/sh "$0" "$@"
CLEANED
如果未設置環境變數,這將導致腳本重新執行自身。然後在重新執行時,它設置變數以確保它不會進入循環。