Установка переменных для linux

Как установить и перечислить переменные среды в Linux

В системах на основе Linux и Unix переменные среды представляют собой набор динамических именованных значений, хранящихся в системе, которые используются приложениями, запускаемыми в оболочках или подоболочках. Проще говоря, переменная среды — это переменная с именем и связанным значением.

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

В этом руководстве мы объясним, как читать и устанавливать переменные среды и оболочки.

Переменные среды и переменные оболочки

Переменные имеют следующий формат:

  • Имена переменных чувствительны к регистру. По соглашению, переменные среды должны иметь имена в ВЕРХНЕМ РЕГИСТРЕ.
  • При присвоении переменной нескольких значений они должны быть разделены двоеточием : символ.
  • Вокруг символа равенства = нет пробела.

Переменные можно разделить на две основные категории: переменные среды и переменные оболочки.

Переменные среды — это переменные, доступные для всей системы и наследуемые всеми порожденными дочерними процессами и оболочками.

Переменные оболочки — это переменные, которые применяются только к текущему экземпляру оболочки. Каждая оболочка, такая как zsh и bash , имеет собственный набор внутренних переменных оболочки.

Доступно несколько команд, которые позволяют вам перечислять и устанавливать переменные среды в Linux:

  • env — команда позволяет запускать другую программу в настраиваемой среде без изменения текущей. При использовании без аргумента он распечатает список текущих переменных среды.
  • printenv — команда печатает все или указанные переменные среды.
  • set — Команда устанавливает или отменяет переменные оболочки. При использовании без аргумента он распечатает список всех переменных, включая переменные среды и оболочки, а также функции оболочки.
  • unset — команда удаляет переменные оболочки и среды.
  • export — команда устанавливает переменные среды.

Список переменных среды

Наиболее часто используемая команда для отображения переменных среды — это printenv . Если имя переменной передается в качестве аргумента команде, отображается только значение этой переменной. Если аргумент не указан, printenv печатает список всех переменных среды, по одной переменной в каждой строке.

Например, чтобы отобразить значение переменной среды HOME вы должны запустить:

На выходе будет напечатан путь текущего пользователя, вошедшего в систему:

Вы также можете передать команде printenv более одного аргумента:

Если вы запустите команду printenv или env без аргументов, она покажет список всех переменных среды:

Результат будет выглядеть примерно так:

Ниже приведены некоторые из наиболее распространенных переменных среды:

  • USER — текущий авторизованный пользователь.
  • HOME — домашний каталог текущего пользователя.
  • EDITOR — используемый по умолчанию редактор файлов. Это редактор, который будет использоваться при вводе edit в терминале.
  • SHELL — путь к оболочке текущего пользователя, например bash или zsh.
  • LOGNAME — имя текущего пользователя.
  • PATH — список каталогов, в которых будет производиться поиск при выполнении команд. Когда вы запускаете команду, система будет искать в этих каталогах в указанном порядке и использовать первый найденный исполняемый файл.
  • LANG — текущие настройки локали.
  • TERM — текущая эмуляция терминала.
  • MAIL — Местоположение, где хранится почта текущего пользователя.

Команды printenv и env выводят только переменные среды. Если вы хотите получить список всех переменных, включая среду, оболочку, переменные и функции оболочки, вы можете использовать команду set :

Читайте также:  Настройка параметров загрузки windows что это

Команда отобразит большой список всех переменных, поэтому вы, вероятно, захотите передать вывод команде less .

Вы также можете использовать команду echo для печати переменной оболочки. Например, чтобы распечатать значение переменной BASH_VERSION вы должны запустить:

Установка переменных среды

Чтобы лучше проиллюстрировать разницу между переменными оболочки и среды, мы начнем с установки переменных оболочки, а затем перейдем к переменным среды.

Чтобы создать новую переменную оболочки с именем MY_VAR и значением Linuxize просто введите:

Вы можете проверить, что переменная установлена, используя либо echo $MY_VAR либо фильтруя вывод команды set с помощью grep set | grep MY_VAR :

Используйте команду printenv чтобы проверить, является ли эта переменная переменной среды или нет:

Вывод будет пустым, что говорит нам, что переменная не является переменной среды.

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

Команда export используется для установки переменных среды.

Чтобы создать переменную среды, просто экспортируйте переменную оболочки как переменную среды:

Вы можете проверить это, запустив:

Если вы попытаетесь напечатать переменную во вспомогательной оболочке, на этот раз вы получите имя переменной, напечатанное на вашем терминале:

Вы также можете установить переменные среды в одной строке:

Созданные таким образом переменные среды доступны только в текущем сеансе. Если вы откроете новую оболочку или выйдете из системы, все переменные будут потеряны.

Постоянные переменные среды

Чтобы сделать переменные среды постоянными, вам необходимо определить эти переменные в файлах конфигурации bash. В большинстве дистрибутивов Linux при запуске нового сеанса переменные среды считываются из следующих файлов:

/etc/environment — используйте этот файл для настройки общесистемных переменных среды. Переменные в этом файле задаются в следующем формате:

/etc/profile — переменные, установленные в этом файле, загружаются при входе в оболочку входа в bash. При объявлении переменных окружения в этом файле вам необходимо использовать команду export :

Файлы конфигурации для конкретной оболочки пользователя. Например, если вы используете Bash, вы можете объявить переменные в

Чтобы загрузить новые переменные среды в текущий сеанс оболочки, используйте source команду:

Выводы

В этом руководстве мы показали вам, как устанавливать и перечислять переменные среды и оболочки.

Не стесняйтесь оставлять комментарии, если у вас есть вопросы.

Источник

Environment variables (Русский)

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

Contents

Утилиты

Пакет coreutils содержит программы printenv и env . Чтобы отобразить список текущих переменных окружения, используйте printenv , которая отобразит имена и значения каждой переменной окружения:

Программа env может быть использована для запуска команд с указанием нового значения переменной окружения. В следующем примере будет запущен xterm, для которого переменная окружения EDITOR имеет значение vim . Такой вызов не затронет переменную окружения EDITOR в текущем сеансе терминала.

Встроенная в Bash команда set позволяет вам устанавливать значения переменных окружения в текущем сеансе терминала, а также отображать имена и значения переменных окружения текущего сеанса. Для получения дополнительной информации, смотрите документацию по команде set.

Читайте также:  Графическая установка кали линукс

Чтобы увидеть переменные окружения конкретных процессов, откройте файл /proc/pid/environ , где pid — числовой идентификатор интересующего процесса. Записи в этом файле отделены друг от друга нулевым байтом ( \x0 ), который обычно не виден в терминале. Вы можете использовать например sed для отображения переменных окружения процесса в более читабельном формате, заменив нулевые байты на переносы строки: sed ‘s:\x0:\n:g’ /proc/$PID/environ

Установка переменных

На системном уровне

Большинство дистрибутивов Linux советуют изменять или добавлять переменные окружения в /etc/profile или других местах. Имейте в виду, что сразу множество файлов могут содержать переменные окружения и переопределять их, вроде /etc/locale.conf . По сути, любой скрипт может быть использован для этого, однако, по принятым в UNIX соглашениям, следует использовать для этого только определенные файлы.

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

  • /etc/environment используется модулем PAM-env. Он не привязан к командным оболочкам, поэтому скрипты или glob-выражения использовать здесь нельзя. Здесь можно указывать только пары имя=значение . Подробнее смотрите pam_env(8) и pam_env.conf(5) .
  • /etc/profile устанавливает переменные только при логине в командные оболочки. Он может запускать любые скрипты в оболочках, совместимых с Bourne shell.
  • Файлы настроек, специфичные для конкретных командных оболочек — глобальные файлы для вашей командной оболочки, инициализирует переменные и запускает скрипты. Например, Bash (Русский)#Файлы настроек или Zsh (Русский)#Файлы Запуска/Завершения.

Ниже приведен пример скрипта, который позволяет добавлять каталог

/bin пользователя в PATH . Чтобы это сделать, просто поместите код в один из системных файлов инициализации окружения ( /etc/profile или /etc/bash.bashrc ):

На уровне пользователя

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

/.pam_environment пользовательский аналог файла /etc/security/pam_env.conf , который используется модулем PAM-env. Смотрите подробнее в pam_env(8) и pam_env.conf(5) .

  • Файлы инициализации командной оболочки, например Bash (Русский)#Файлы настроек или Zsh (Русский)#Файлы Запуска/Завершения.
    • systemd может загружать переменные окружения из

    Например, чтобы добавить каталог в PATH , поместите следующее в

    Чтобы увидеть изменения перезайдите в командную оболочку, либо используйте команду source: $ source

    /.bashrc . Это означает, что, например, активируемые через dbus программы вроде Gnome Files не будут использовать их по умолчанию. Смотрите systemd (Русский)/User (Русский)#Переменные окружения.
    Чтение

    /.pam_environment объявлено устаревшим, и эта возможность будет удалена в будущем.

    Графические приложения

    Чтобы установить переменные окружения для графических приложений, вы можете поместить ваши переменные в xinitrc или в xprofile если используется экранный менеджер, например:

    The factual accuracy of this article or section is disputed.

    /.config/environment.d/ в Wayland-сеансе является поведением, специфичным для GDM. (Discuss in Talk:Environment variables (Русский))

    Приложения, работающие в Wayland, могут использовать systemd user environment variables, так как Wayland не использует Xorg-специфичные файлы:

    Чтобы установить переменные окружения только для определённого приложения вместо целого сеанса, измените .desktop файл этого приложение. Смотрите Desktop entries (Русский)#Изменение переменных среды.

    На уровне сеанса

    Иногда разумно установить переменную окружения только для текущего сеанса. Для этого вы можете создать в своем каталоге скрипт с нужными переменными, который можно будет запустить в любое время с помощью команды source, либо вводить команды для установки переменных окружения самостоятельно, используя команду export, например:

    Примеры

    В этом разделе описываются типовые переменные окружения, используемые в Linux.

    • DE означает имя окружения рабочего стола (Desktop Environment). xdg-open использует это значение для выбора наиболее удобного приложения для открытия файлов, которое предоставляет окружение. Для использования этой возможности может потребоваться установить некоторые пакеты. Для GNOME необходимо установить libgnomeAUR ; в Xfce — exo . Типичные значения переменной окружения: gnome , kde , xfce , lxde и mate .

    Переменная окружения DE должна быть экспортирована перед запуском оконного менеджера, например: Это позволит xdg-open использовать более удобный exo-open, так как он будет полагать, что запущен в Xfce. Используйте exo-preferred-applications для настройки.

    • DESKTOP_SESSION . В среде рабочего стола LXDE, когда у DESKTOP_SESSION установлено значение LXDE , xdg-open будет использовать файловые предпочтения из pcmanfm.
    • PATH содержит список каталогов, разделённых двоеточиями, в которых система ищет исполняемые файлы. Когда обычная команда, например, ls , rc-update или emerge , интерпретируется командной оболочкой (такой как bash или zsh ), оболочка ищет исполняемый файл с указанным именем в этом списке, и, если находит, запускает файл, передав ему указанные аргументы командной строки. Чтобы запускать исполняемые файлы, пути к которым не находятся в PATH , необходимо указывать относительный или абсолютный путь к файлу, например ./a.out или /bin/ls .
    • HOME содержит путь к домашнему каталогу текущего пользователя. Эта переменная может использоваться приложениями для определения расположения файлов настроек пользователя, который их запускает.
    • PWD содержит путь к рабочему каталогу.
    • OLDPWD содержит путь к предыдущему рабочему каталогу, то есть, значение PWD перед последним вызовом cd.
    • TERM содержит тип запущенного терминала, например xterm-256color . Это используется некоторыми программами, которые хотят знать возможности текущего терминала.
    • MAIL содержит путь к каталогу, где сохраняется входящая почта. Обычно имеет значение /var/spool/mail/$LOGNAME .
    • ftp_proxy и http_proxy содержат адреса прокси-серверов для протоколов FTP и HTTP соответственно:
    • MANPATH содержит список каталогов, которые использует man для поиска man-страниц.
    • INFODIR , аналогично MANPATH , содержит список каталогов, в которых команда info производит поиск info-страниц, например /usr/share/info:/usr/local/share/info .
    • TZ может использоваться для установки временной зоны. Доступные временные зоны можно найти в /usr/share/zoneinfo/ , например TZ=»/usr/share/zoneinfo/Europe/Moscow» . When pointing the TZ variable to a zoneinfo file, it should start with a colon per the GNU manual.

    Программы по умолчанию

    • SHELL содержит путь к предпочитаемой командной оболочке текущего пользователя. Имейте в виду, что это не обязательно совпадает с текущей работающей оболочкой, хотя обычно Bash прописывает эту переменную при своём запуске.
    • PAGER указывает команду для запуска программы постраничного просмотра содержимого текстовых файлов, например, /bin/less .
    • EDITOR содержит команду для запуска программы для редактирования текстовых файлов, например /usr/bin/nano . Также можно задать специальную команду, которая будет выбирать редактор в зависимости от окружения, например, gedit в X или nano в терминале, как в этом примере:
    • VISUAL позволяет указать имя продвинутого текстового редактора для более сложных задач, например, редактирования почты. Это могут быть vi , vim, emacs и т. д.
    • BROWSER содержит команду для запуска веб-браузера. Может быть полезно устанавливать это значение в зависимости от наличия графического окружения:

    Использование pam_env

    PAM-модуль pam_env(8) загружает переменные для прописывания в окружение из следующиех файлов: /etc/security/pam_env.conf , /etc/environment и

    • /etc/environment должен содержать только простые пары вида ПЕРЕМЕННАЯ=значение на отдельных строках, наприммер:
    • /etc/security/pam_env.conf и

    /.pam_environment имеют одинаковый формат: @ и @ являются специальными переменными, значение которых берётся из /etc/passwd . Следующий пример показывает, как использовать переменную HOME внутри другой переменной:

    Источник

    Читайте также:  Драйвера nef для windows
    Оцените статью