web-dev-qa-db-ja.com

Linux:環境変数はどこに保存されますか?

端末に入力すると、

export DISPLAY=:0.0

...その環境変数を格納しているシェルはどこですか?

Ubuntu 8.10を使用しています。ファイル〜/ .profileおよび/ etc/profileを調べましたが、DISPLAYの痕跡は見つかりません。

63
Ben L

プロセスの環境変数は実行時に存在し、ファイルなどには保存されません。これらは、プロセスの独自のメモリに保存されます(子プロセスに渡される場所)。しかし、仮想ファイルは

/ proc/pid/environ

このファイルには、プロセスの呼び出し時に渡されたすべての環境変数が表示されます(プロセスがメモリのその部分を上書きしない限り、ほとんどのプログラムは上書きしません)。カーネルは、その仮想ファイルを介してそれらを表示します。それらをリストできます。たとえば、プロセス3940の変数を表示するには、次のようにします。

cat /proc/3940/environ | tr '\0' '\n'

各変数は、次の変数からバイナリゼロで区切られます。 trはゼロを改行に置き換えます。

104

「set」と入力すると、現在のすべての変数のリストが表示されます。何かを永続化する場合は、〜/ .bashrcまたは〜/ .bash_profileに入れます(bashを使用している場合)

33
tddmonkey

環境をシステム全体で使用する場合は、/etc/environmentファイル。

11
JohnnyQ

プロセス(シェル)に保存され、エクスポートしたため、プロセスを実行するプロセスが生成されます。

上記を実行しても、/ etc/profileのようなファイルシステムのどこにも保存されません。そのためには、明示的にそこに置く必要があります。

7
cletus