- Переменные окружения в Linux: как посмотреть, установить и сбросить
- Переменные окружения и переменные оболочки
- Про Linux за 5 минут
- Вывести список всех переменных окружения и оболочки
- Общий набор переменных окружения в Linux
- Установка переменных окружения в Linux
- Установить постоянные переменные окружения в Linux
- Использование файла .bashrc
- Использование файла .bash_profile
- Использование etc/environment
- Установить переменные окружения в одной строкой
- Сбросить переменные окружения в Linux
- Использование команды unset
- Использование команды set -n
- Установить переменную окружения PATH в Linux
- Заключение
- Как вывести значения всех переменных и переменных окружения в Linux
- printenv
- declare
- Переменные среды, доступные для запуска приложения
- Связанные статьи:
Переменные окружения в Linux: как посмотреть, установить и сбросить
Переменные окружения (или переменные среды) — это набор пар ключ-значение, которые хранятся в вашем Linux и используются процессами для выполнения определенных операций. Они отвечают за стандартное поведение системы и приложений. При взаимодействии с вашим сервером через сеанс оболочки, есть много информации, которую ваша оболочка обрабатывает, чтобы определить ее поведение и доступы. Некоторые из этих параметров содержатся в настройках конфигурации, а другие определяются пользовательским вводом. Оболочка отслеживает все эти параметры и настройки через окружение. Окружение — это область, которую оболочка создает каждый раз при запуске сеанса, содержащего переменные, определяющие системные свойства. Например, это может быть часовой пояс в системе, пути к определенным файлам, приложения по-умолчанию, локали и многое другое. Переменные окружения также могут использоваться в программах оболочки или в подоболочках для выполнения различных операций.
В этом руководстве мы расскажем, как просматривать, устанавливать и сбрасывать переменные окружения в вашей системе.
Переменные окружения и переменные оболочки
Переменные имеют следующий формат:
KEY=value KEY="Some other value" KEY=value1:value2
Должны соблюдаться следующие правила:
- Имена переменных чувствительны к регистру (регистрозависимы). Переменные окружения должны быть написаны большими буквами (UPPER CASE).
- Несколько значений переменных разделяются двоеточием :
- Вокруг символа = нет пробела
Переменные можно разделить на две категории:
- Переменные окружения (Environmental Variables) — это переменные, которые определены для текущей оболочки и наследуются любыми дочерними оболочками или процессами. Переменные окружения используются для передачи информации в процессы, которые порождаются из оболочки.
- Переменные оболочки (Shell Variables) — это переменные, которые содержатся исключительно в оболочке, в которой они были установлены или определены. Они часто используются для отслеживания эфемерных данных, например, текущего рабочего каталога.
Про Linux за 5 минут
Вывести список всех переменных окружения и оболочки
Мы можем увидеть список всех наших переменных окружения, используя команды env или printenv . В состоянии по умолчанию они должны работать точно так же:
SHELL=/bin/bash TERM=xterm USER=demouser LS_COLORS=rs=0:di=01;34:ln=01;36:mh=00:pi=40;33:so=01;35:do=01;35:bd=40;33;01:cd=40;33;01:or=40;31;01:su=37;41:sg=30;43:ca. MAIL=/var/mail/demouser PATH=/usr/local/bin:/usr/bin:/bin:/usr/local/games:/usr/games PWD=/home/demouser LANG=en_US.UTF-8 SHLVL=1 HOME=/home/demouser LOGNAME=demouser LESSOPEN=| /usr/bin/lesspipe %s LESSCLOSE=/usr/bin/lesspipe %s %s _=/usr/bin/printenv
Это типичный вывод как для env , так и для printenv . Разница между этими двумя командами проявляется только в их более конкретной функциональности. Например, с помощью printenv вы можете запросить значения отдельных переменных:
А как посмотреть переменные оболочки? Для этого можно использовать команду set . Если мы введем set без каких-либо дополнительных параметров, мы получим список всех переменных оболочки, переменных окружения, локальных переменных и функций оболочки:
BASH=/bin/bash BASHOPTS=checkwinsize:cmdhist:expand_aliases:extglob:extquote:force_fignore:histappend:interactive_comments:login_shell:progcomp:promptvars:sourcepath BASH_ALIASES=() BASH_ARGC=() BASH_ARGV=() BASH_CMDS=() . . .
Тут мы получим гигантский вывод, поэтому стоит использовать less , чтобы разделить содержимое на страницы:
Общий набор переменных окружения в Linux
- USER: текущее имя пользователя, использующего систему
- EDITOR: какая программа запускается для редактирования файла на вашем хосте
- HOME: домашний каталог текущего пользователя
- PATH: список каталогов, разделенных двоеточиями, в которых система ищет команды
- PS1: основная строка приглашения (для определения отображения приглашения оболочки)
- PWD: текущий рабочий каталог
- _: самая последняя команда, выполненная в системе пользователем
- MAIL: путь к почтовому ящику текущего пользователя
- SHELL: оболочка, используемая для интерпретации команд в системе, она может быть много разных (например, bash, sh, zsh или другие)
- LANG: кодировка языка, используемая в системе
- DESKTOP_SESSION: текущий рабочий стол, используемый на вашем хосте (GNOME, KDE)
- HISTFILESIZE: количество строк истории команд, сохраненных в файле истории
- HISTSIZE: количество строк истории, разрешенных в памяти
- UID: текущий UID для пользователя
- HOSTNAME: имя компьютера системы
- TERM: указывает тип терминала
- OLDPWD: предыдущий рабочий каталог
- BASHOPTS: список параметров, которые использовались при выполнении bash.
- BASH_VERSION: версия bash, выполняемая в удобочитаемой форме.
- BASH_VERSINFO: версия bash с машиночитаемым выводом.
- COLUMNS: Количество столбцов в ширину, которые используются для вывода вывода на экран.
- DIRSTACK: стек каталогов, доступных с помощью команд pushd и popd.
- IFS: внутренний разделитель полей для разделения ввода в командной строке. По умолчанию это пробел.
- SHELLOPTS: параметры оболочки, которые можно установить с помощью параметра set.
Установка переменных окружения в Linux
В Linux у вас есть много разных способов установки переменных окружения в зависимости от того, хотите ли вы сделать их постоянными или нет.
Самый простой способ установить переменные окружения — использовать команду export .
Для примера создаим новую переменную, а затем экспортируем ее.
Чтобы создать новую переменную оболочки с именем NEW_VARIABLE и значением «test», и затем сразу экспортировать ее введите:
printenv NEW_VARIABLE test
Используя export , ваша переменная окружения будет установлена для текущего сеанса оболочки. Как следствие, если вы откроете другую оболочку или перезапустите свою систему, переменная окружения больше не будет доступна.
Установить постоянные переменные окружения в Linux
Как вы видели в предыдущем разделе, переменные окружения не были постоянными при перезапуске оболочки. Однако существует способ сделать ваши изменения постоянными: с помощью системных файлов, которые читаются и выполняются в определенных условиях.
Использование файла .bashrc
Самый популярный способ постоянной установки переменных среды — это добавить их в файл .bashrc .
Файл .bashrc — это скрипт, выполняемый всякий раз, когда вы инициализируете сеанс интерактивной оболочки. Как следствие, когда вы запускаете новый терминал через интерфейс GNOME или просто используете screen сессию, вы будете использовать файл .bashrc .
Например, добавьте следующие записи в ваш файл .bashrc :
Сохраните ваш файл и используйте команду source для перезагрузки файла bashrc для текущего сеанса оболочки.
Вы можете вывести новую переменную окружения с помощью printenv и посмотреть, дату в Linux, изменив TZ.
$ printenv TZ America/New_York $ date Sat 19 Jan 2020 10:03:00 AM EDT
Отлично, ваши изменения теперь сохраняются после перезагрузки оболочки или системы!
Использование файла .bash_profile
В качестве альтернативы, если вы планируете подключаться к своим сеансам с помощью login оболочек, вы также можете добавить переменные окружения непосредственно в файл .bash_profile .
$ export TZ="America/New_York" $ source ~/.bash_profile
Использование etc/environment
Если вам нужно применить определенные переменные окружения для всех, то определить общесистемные переменные окружения. Чтобы установить общесистемные переменные окружения в Linux, вам нужно экспортировать переменные в файл /etc/environment .
Например, чтобы изменить редактор, используемый глобально, вы можете изменить переменную EDITOR в файле окружения.
Теперь попробуйте войти в систему как под разными пользователями в вашей системе, и вы увидите, что переменная EDITOR установлена для всех на сервере.
Установить переменные окружения в одной строкой
Теперь, когда вы знаете все подробности о том, как устанавливать переменные окружения, вы можете использовать эти шорткаты для их легкой установки.
echo "export VAR="value"" >> ~/.bashrc && source ~/.bashrc
echo "export VAR="value"" >> ~/.bash_profile && source ~/.bash_profile
echo "export VAR="value"" >> /etc/environment && source /etc/environment
Сбросить переменные окружения в Linux
Теперь, когда вы установили много переменных окружения в своей системе, вы можете отменить некоторые из них, если вы больше не используете их. В Linux существует два способа сброса переменных окружения: с помощью команды unset или путем удаления записей переменных в ваших системных файлах.
Использование команды unset
Чтобы удалить переменную окружения, используйте команду unset со следующим синтаксисом:
unset USERNAME printenv USERNAME
Использование команды set -n
Кроме того, вы можете сбросить переменные окружения, используя команду set с флагом -n -n.
set -n USERNAME printenv USERNAME
Установить переменную окружения PATH в Linux
В системах Linux очень часто задают переменную окружения PATH , чтобы система могла находить команды.
Чтобы отобразить текущую переменную окружения PATH , выполните команду printenv :
printenv PATH /usr/local/bin:/usr/bin:/bin:/usr/local/games:/usr/games
Чтобы установить переменную окружения PATH, добавьте строку export в файл .bashrc и используйте с ним команду source :
echo "export PATH " >> ~/.bashrc && source ~/.bashrc printenv PATH :/usr/local/bin:/usr/bin:/bin:/usr/local/games:/usr/games
Успех! Вы успешно обновили переменную окружения PATH в Linux.
Заключение
В сегодняшнем руководстве вы узнали, что переменные окружения в Linux можно задавать несколькими способами: с помощью команды export , а также путем изменения некоторых системных файлов, чтобы сделать их постоянными.
Вы также узнали, что можно сбросить переменные окружения и как легко обновить переменную окружения PATH .
Как вывести значения всех переменных и переменных окружения в Linux
Как перечислить все имена переменных и их текущие значения? Как показать только переменные окружения? Ответу на эти вопросы посвящена данная статья.
Можно вывести значения переменных по одной, например:
echo $HOME echo $PWD echo $USER echo $SHELL
Если вам нужен полный список, то продолжайте читать.
printenv
Для bash: (стандартная оболочка во многих дистрибутивах Linux)
Введите следующую команду в терминале, чтобы распечатать все переменные среды:
Для получения дополнительной информации об этой команде прочтите справочную страницу:
Чтобы отобразить список, включающий «переменные оболочки», вы можете ввести следующую команду:
Это покажет вам не только переменные оболочки, но и переменные среды.
Для zsh: (оболочка по умолчанию используется в Kali Linux)
Используйте следующую команду:
( setopt posixbuiltin; set; ) | less
Для получения дополнительной информации о параметрах ZSH смотрите справочную страницу
declare
Вы можете увидеть все переменные с помощью встроенной команды declare.
Если вас интересуют только переменные среды, используйте
Запустите «help declare», чтобы увидеть, какие есть другие опции.
Переменные среды, доступные для запуска приложения
Во всех описанных выше методах предлагается следующая процедура:
- запустить терминал
- показать переменные среды, используя env, printenv или что-то ещё
Проблема этих решений заключается в том, что вы видите переменные среды оболочки, запущенной в терминал. Вы не видите переменных среды, доступных для запуска приложения, например, непосредственно в графическом интерфейсе.
Это заметно, если, например, вы используете свой ~/.profile, или .bashrc, или .zshenv (в зависимости от вашей оболочки) для изменения переменных среды — как классическое добавление каталогов к PATH.
Чтобы увидеть переменные среды, доступные для приложения, запущенного непосредственно в графической среде, вы можете сделать следующее (в Gnome Shell, я уверен, что есть эквивалентный метод во всех других DE):
xterm -e bash --noprofile --norc
Или, если у вас нет xterm, то запустите:
gnome-terminal - bash --noprofile --norc
Теперь у вас есть терминал с оболочкой, которая не добавляла никаких переменных среды. Вы можете использовать env здесь, чтобы перечислить все свои переменные среды:
Очевидно, что новая оболочка будет иметь переменные среды, добавленные системными файлами, но эти переменные должны быть доступны (по наследству) для всех программ в системе в любом случае.