Для оболочки Bash:
Переменные оболочки по-разному отличаются от переменных среды:
♦ Переменная оболочки специфична для самой оболочки и не наследуется дочерними процессами. Например, допустим, вы запускаете другое приложение из оболочки, которое не будет наследовать переменную оболочки:
$ SHELL_VAR=xyz
$ firefox
SHELL_VAR
не будет доступно в среде дочернего процесса (firefox).
♦ Напротив, переменные окружения родительского процесса (здесь оболочка) наследуются всеми дочерними процессами:
$ export SHELL_VAR=xyz
$ firefox
♦ Переменные оболочки и среды являются локальными для оболочки / процесса, которые их определили:
Переменные среды могут быть постоянными , тогда как для переменных оболочки после выхода из сеанса все они исчезают.
Примечание: приведенные выше примеры только изменяют оболочку, над которой вы работаете, другими словами, если вы выходите из системы или запускаете новую оболочку / терминал, вы не увидите переменные, которые вы определили, это в соответствии с принцип локальности процесса.
Как создать постоянные переменные оболочки:
Один из способов сделать это - изменить файл ~ / .profile :
export SHELL_VAR=xyz
Этот параметр зависит от пользователя и не распространяется на всю систему. Для системных переменных среды вы можете добавить указанную выше строку в файл .sh в / etc / profile.d
Я настоятельно рекомендую прочитать эту страницу: EnvironmentVariables