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

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

export DISPLAY=:0.0

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

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

Ответ 1

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

/proc/pid/environ

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

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

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

Ответ 2

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

Ответ 3

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

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

Ответ 4

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

Ответ 5

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