Linux で実行された各プロセスが持つ環境変数を設定できますか?

Linux で実行された各プロセスが持つ環境変数を設定できますか?

Windows では、次のウィンドウを使用して、各プロセスの実行時に設定される環境変数を設定できます。

ここに画像の説明を入力してください

Linux でも同じことができますか?

答え1

ユーザー インターフェイスを介してユーザー アプリケーションの環境変数を設定する方法は、Windows と Linux では多少異なります。使用している Windows インターフェイスによって、現在のセッションの変数の値と将来のセッションの値の両方が変更されます。

Linux では、環境変数を設定する従来の方法はログイン時に機能します。設定方法はいくつかありますが、ログイン時にのみ読み込まれるファイルを変更することになります。そのため、現在のセッションには適用されません。このために使用できる主なファイルは、ホームディレクトリにある と です.profile.pam_environmentディストリビューションやシェルに依存しない環境変数を設定する最良の方法は何ですか?より詳細な議論については。

現在のセッションの環境変数を設定するには、アプリケーションを起動するプロセス、つまりGUIシェルで設定する必要があります。Windowsでは、GUIシェルの選択肢がないため、これは簡単です。(デフォルトのシェルを置き換えることは技術的には可能ですが、それを行うユーザーはほとんどいません。)Linuxでは、何百ものGUIシェルが考えられます。GUIシェルは通常、ウィンドウマネージャ、時には別のコンポーネントデスクトップ環境ウィンドウ マネージャーまたはデスクトップ環境で環境変数を設定する標準的な方法はありません。各 WM/DE には独自の方法があります (残念ながら、方法がないものもあります)。

環境変数の変更にとらわれないWM/DEの方法は、編集することです~/.profile。基本的な構文は(他の方法もありますが)

export MYVAR='the value of the variable'

次にターミナル(シェルを実行する)を起動し、そのシェルで次のように入力します。

. ~/.profile

これにより、 から環境変数の新しい値が読み込まれます.profile。その後、そのシェルからプログラムを実行すると、新しい変数がそのプログラムに適用されます。ただし、GUI メニューからプログラムを直接実行する場合、プログラムは GUI メニューを提供するプログラムの環境を継承するため、これを変更する場合は、そのプログラムが提供する方法 (またはデスクトップ環境の一部としての関連プログラム) を使用する必要があります。

答え2

ファイル内で変数を設定できます/etc/environment。形式は次のようになります。

VARIABLE=value

変数の拡張は機能しない/etc/environmentので、この変数や変数を必要とするすべてのプロセスを再起動する必要があることに注意してください。

答え3

環境変数は、その性質上、環境変数を設定するプロセス/シェルによって開始されるすべてのプロセスで使用できます。

Unixの環境変数は、例えば次のようにエクスポートされるシェル変数ですexport

MYVAR="my value"
export MYVAR

通常、環境変数はシェルの起動ファイルで設定します。 の場合bash、これは にあり~/.bash_profile、他の多くのシェルは を使用します~/.profile

/etc(例)の下にはシステム全体のシェル初期化スクリプトがあり/etc/profile、これを使用してすべてのユーザーの環境をカスタマイズできます。

環境変数は、シェルに依存しない方法ですべてのユーザーに対してグローバルに設定することもできますが、これは Unix の種類に応じて異なります。ほとんどの BSD では変更によってこれを行いますが、/etc/login.conf一部の Linux では/etc/environment他のメカニズムを使用します。

関連情報