Linux: где хранятся переменные среды?


Если я ввожу в терминал

export DISPLAY=:0.0

... где оболочка хранит эту переменную среды?

Я использую Ubuntu 8.10. Я посмотрел в файлах ~/.профиль и/etc / профиль и не может найти никаких следов отображения.

5 52

5 ответов:

переменные среды процесса существуют во время выполнения и не хранятся в каком-либо файле или около того. Они хранятся в собственной памяти процесса (вот где они находятся, чтобы передать детям). Но есть виртуальный файл в

/proc/pid/environ

этот файл показывает все переменные среды, которые были переданы при вызове процесса (если процесс не перезаписал эту часть своей памяти - большинство программ этого не делают). Ядро делает их видимыми через этот виртуальный файл. Можно перечислить их. Например, чтобы просмотреть переменные процесса 3940, можно сделать

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

каждая переменная отделяется двоичным нулем от следующей. tr заменяет ноль на новую строку.

типа "set" и вы получите список всех текущих переменных. Если вы хотите, чтобы что-то сохранялось, поместите его в ~/.bashrc или ~/.файл (если вы используете bash)

Если вы хотите использовать среду для общесистемного использования, вы можете сделать это с помощью .

он хранится в процессе (оболочке), и поскольку вы его экспортировали, любые процессы, которые процесс порождает.

выполнение вышеизложенного не сохраняет его в любом месте файловой системы, например/etc / profile. Вы должны поставить его там явно для того, чтобы это произошло.

эта переменная не хранится в каком-либо скрипте. Он просто устанавливается скриптами X-сервера. Вы можете проверить переменные среды, установленные в настоящее время с помощью set.