サブシェルを「プログラム」にする方法

サブシェルを「プログラム」にする方法

次のように、既存のすべての環境変数を無視して1つだけエコーしたいと思います。

env -i <(
   export foo=bar; 
   env
)

これにより、次のように印刷されます。

foo=bar

しかし、建設

env -i <()

私の直感はうまくいくはずですが、うまくいかないようです。 env -iを実行するインラインプログラムをここでどのように作成できますか?

ベストアンサー1

envに実際のプログラムを提供します。

env -i bash -c '
   export foo=bar
   env
'

これは$PATH環境変数も削除するため、bashシステムのデフォルトのコマンド検索パスにないと機能しません。

bash通訳者を渡す前に、通訳者のパスを調べることができますenv

env -i -- "$(command -v bash)" -c '
   export foo=bar
   env
'

起動するシェルでbashコマンドを検索するのに同じ問題がある可能性がありますenv

おすすめ記事