したがって、エクスポートされた変数の負荷が子シェルによって認識されないようにする必要があります。
問題は、アプリケーション (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
ログイン後と同じ環境を維持したい場合は、いくつかの変数だけを保存し、 をロードして残りを設定します。別のログイン シェル ( を使用した bash 、 を使用した cshなど).profile
を使用する場合は、それに応じて調整してください。.bash_profile
.login
env -i HOME="$HOME" PATH=/usr/local/bin:/usr/bin:/bin USER="$USER" \
sh -c '. ~/.profile; "$@"' _ somecommand
あるいは、環境からいくつかの変数を削除することもできます。 は、環境からと をenv -u VAR1 -u VAR2 somecommand
削除し、 を実行します。 Linux では、 を使用して、フィルタリングに適した 1 行に 1 つの名前を持つ環境変数のリストを生成できます。 他の Unix バリアントでは、 は同じ機能を実行しますが、一部の変数の値に改行が含まれている場合に誤検出が発生する可能性があるという制限があります。VAR1
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_*}
。