以下を試しましたが、うまくいかないようです。
$ cat script.sh
#!/bin/env -i /bin/sh
/bin/env
$ script.sh
/bin/env: invalid option -- ' '
Try `/bin/env --help' for more information.
ベストアンサー1
-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
環境変数が設定されていない場合、スクリプトは自動的に再実行されます。次に、再実行時にループに陥らないように変数を設定します。