したがって、サブシェルがエクスポートされた変数のロードを認識しないようにする必要があります。
問題は、アプリケーション(Wine + UDK)が環境に多すぎる(> 65535)バイトのプロジェクトを構築しないことです。そしてbash間で環境変数を共有するプロジェクト(ScriptEchoColor)を使用した後、私のプロジェクトは多くの(95323)バイトシェルです。
現在の環境変数を許可せず、代わりに私のユーザープロファイルとシステム全体で設定された変数のみを使用するサブシェルを生成できるコマンドが見つかりません。
私は図のように多くのオプションを試しましたbash --help
。
答え1
このenv
コマンドを使用して、クリーンな環境でプロセスを開始できます。例は次のとおりです。
env -i /bin/myprog
それでもいくつかの変数をエクスポートする必要がある場合は、呼び出し中に次のことができます。
env -i MYVAR=foo /bin/myprog
envコマンドが必要ですPOSIX。
答え2
env -i somecommand
somecommand
空の環境で実行してください。後でパラメータを入れることができますsomecommand
。削除された場合は、PATH
フルパスを指定する必要がありますsomecommand
。PATH
あるいは、他の値を維持または設定することもできます。
env -i PATH="$PATH:/another/directory" somecommand
ログイン後と同じ環境が必要な場合は、いくつかの変数を残して変数をロードして.profile
残りを設定します。他のログインシェル(bash対.bash_profile
csh.login
など)を使用している場合は、それに合わせて調整してください。
env -i HOME="$HOME" PATH=/usr/local/bin:/usr/bin:/bin USER="$USER" \
sh -c '. ~/.profile; "$@"' _ somecommand
あるいは、環境からいくつかの変数を削除することをお勧めします。環境からのenv -u VAR1 -u VAR2 somecommand
削除と実行VAR1
Linux では、フィルタリングに適した 1 行に 1 つの名前で環境変数のリストを生成するために使用できます。他のUNIXバリアントでも同じことを行いますが、一部の変数の値に改行文字が含まれている場合は偽の肯定を見つけることができるという制限があります。VAR2
somecommand
env -0 | tr '\n\0' '.\n' | sed 's/=.*//'
env | sed 's/=.*//'
答え3
問題typeset +x variable_name...
またはdeclare +x variable_name...
コマンド。などの正規表現を変数名として使用することもできますtypeset +x ${!MY_VAR_*}
。