Bash

如何在乾淨的環境中啟動腳本?

  • February 17, 2022

我嘗試了以下方法,但似乎不起作用:

$ 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如果未設置環境變數,這將導致腳本重新執行自身。然後在重新執行時,它設置變數以確保它不會進入循環。

引用自:https://unix.stackexchange.com/questions/98829