Linux файл с переменными окружения

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

Читайте также:  Spacedesk ��� mac os

/.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 внутри другой переменной:

    Источник

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

    How to Set and List Environment Variables in Linux

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

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

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

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

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

    • Имена переменных чувствительны к регистру. По соглашению переменные среды должны иметь имена UPPER CASE.
    • При назначении нескольких значений переменной они должны быть разделены : символом двоеточия .
    • Вокруг = символа равенства нет места .

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

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

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

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

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

    Переменные среды списка

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

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

    Вывод выведет путь текущего пользователя, вошедшего в систему:

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

    Вывод

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

    Источник

    Читайте также:  Объем памяти флешки для установки windows
    Оцените статью