System environment variables linux

Переменные окружения в Linux: как посмотреть, установить и сбросить

img

Переменные окружения (или переменные среды) — это набор пар ключ-значение, которые хранятся в вашем 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 вы можете запросить значения отдельных переменных:

    Читайте также:  What is gcc package in linux

    А как посмотреть переменные оболочки? Для этого можно использовать команду 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 .

    Читайте также:  Linux остановить x server linux mint

    Например, добавьте следующие записи в ваш файл .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 , а также путем изменения некоторых системных файлов, чтобы сделать их постоянными.

    Читайте также:  Linux ftp сервер vsftpd

    Вы также узнали, что можно сбросить переменные окружения и как легко обновить переменную окружения PATH .

    Источник

    How to Set an Environment Variable in Linux

    Zaira Hira

    Zaira Hira

    How to Set an Environment Variable in Linux

    In programming, you use variables to store information like strings and numbers temporarily.

    Variables can be used repeatedly throughout the code or by your operating system to provide values. You can edit them, overwrite them, and delete them.

    In this tutorial, I’ll teach you what environment variables are and how to set them in Linux.

    What Are Environment Variables?

    Environment variables are the variables specific to a certain environment. For example, each user in an operating system has its own environment. An admin user has a different environment than other users do, for example.

    You might declare an environment variable only required by your user (for example a secret token) that doesn’t need to be exposed to other users.

    Here are some examples of environment variables in Linux:

    • USER – This points to the currently logged-in user.
    • HOME – This shows the home directory of the current user.
    • SHELL – This stores the path of the current user’s shell, such as bash or zsh.
    • LANG – This variable points to the current language/locales settings.
    • MAIL – This shows the location of where the current user’s mail is stored.

    These environment variables vary based on the current user session.

    How to List Environment Variables in Linux

    The command used to display all the environment variables defined for a current session is env .

    Here is the output for my session:

    image-194

    For the changes to take effect, update the .bashrc file using the source command:

    Let’s verify by opening a new session.

    image-196

    For the changes to take effect, use the command source /etc/environment .

    image-198

    • /etc/profile – Variables set in this file are read whenever a bash shell is logged in. Edit this file and use the export command:

    Now, I’ll switch the user to the root user and verify if I can access the variable GLOBAL_VARIABLE .

    root@Zaira:~# echo $GLOBAL_VARIABLE This is a global variable

    It worked! I have been able to access the global variable defined by the user Zaira through the root user as well. The same would apply to other users too. So now you also know how to define global environment variables.

    Conclusion

    In this tutorial, you learned how to create and define environment variables in Linux. You also learned how to make them persistent so that you can use them across multiple sessions.

    What’s your favorite thing you learned here? Let me know on Twitter!

    You can read my other posts here.

    Источник

  • Оцените статью
    Adblock
    detector