Как просмотреть в каких файлах определяются переменные окружения?

Есть ли возможность узнать, где именно определена та или иная переменная окружения?
Lupo_Alberto, не совсем понятен вопрос - переменные окружения определены на разных уровнях, наверное, точнее сказать имеют несколько типов, а значит и определены в разных файлах
- системные - определены всем пользователям в системе и загружаются при старте системы из системных конфигурационных файлов (/etc/environment, /etc/profile, /etc/profile.d/, /etc/bash.bashrc)
- пользовательские - определены конкретному пользователю и загружаются при его входе в систему из конфигурационных файлов, размещенных в директории пользователя (это, как правило, .bashrc, .bash_profile, .bash_login, .profile и другие, редко применяемые)
- локальные - определены только для текущей сессии - нигде не хранятся, а создаются с помощью специальных команд (после завершения сессии безвозвратно удаляются .… хотя теми же командами можно в текущей сессии удалить и созданные ранее в этой сессии)
Это описано в Wiki, но есть и неплохие статейки на эту тему с подробным описанием и назначением каждого конфигурационного файла.
Ошибки не исчезают с опытом - они просто умнеют
У каждого процесса своё окружение, окружение по факту это массив.

Просмотреть можно с помощью env

p.s. как формируется уже расписали)
Ошибки в тексте-неповторимый стиль автора©
есть еще статья в нашей вики
Я, возможно, неправильно задал вопрос.
Что такое системные, пользовательские, локальные переменные и как их назначить я знаю.
Команда env выводит лишь список ИМЯ_ПЕРЕМЕННОЙ=значение. Меня интересует, в каком именно файле присваивается значение каждой из этих переменных.
Так, к своему стыду, я не могу найти тот файл, где присваивается значение системной переменной TERM.
Точнее, даже так: я знаю, где и как присвоить, но не могу найти, откуда оно берётся по-умолчанию.
P.S. На вновь установленной системе, где происходит присваивание переменной TERM?
red
есть еще статья в нашей вики
«Читал, много думал...» ©
Спасибо, но там я не нашёл ответа на свой вопрос.
Lupo_Alberto
Спасибо, но там я не нашёл ответа на свой вопрос.
как предположение
раз уже есть список мест где прописаны данные переменные то может просто погрепать на наличие нужной
Так, например, видно, где присваивается переменная EDITOR

% sudo grep "\<export\>" -r /etc | grep -v ".*#" | grep "\<EDITOR\>"
/etc/zsh/zshrc:    export EDITOR=${EDITOR:-vim}
/etc/zsh/zshrc:    export EDITOR=${EDITOR:-vi}
...но с TERM ничего подобного не видно.
Возможно, «виноват» Леннарт Пёттеринг, точнее systemd, который, может быть, занимается и настройками окружения.
red
раз уже есть список мест где прописаны данные переменные то может просто погрепать на наличие нужной
Что-то мне подсказывает, что и этот «велосипед» уже изобретён. Должна быть команда с подобным функционалом.
Lupo_Alberto
я не могу найти тот файл, где присваивается значение системной переменной TERM
Конкретно $TERM ни в каком файле не присваивается, эту переменную создаёт сама программа терминала, и видят её значение программы, вызванные из этого терминала. Поучительно ввести echo $TERM в разных терминалах и в голой консоли.
 
Зарегистрироваться или войдите чтобы оставить сообщение.