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

Они могут быть изменены пользователем прямо или косвенно с помощью запущенных приложений. Можно иметь два сеанса, подключенных к одному и тому же серверу от одного и того же пользователя с разными значениями переменных среды. Ключевым моментом, когда это важно, является установка автоматизированных задач для запуска с помощью cronjobs или сценариев для запуска другими пользователями, где переменные среды могут отличаться, что означает, что задачи могут выполняться неправильно.

Переменные среды в системе

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

printenv

Вывод будет в формате переменной окружения (обычно это все заглавные буквы), за которым следует знак равенства (=), а затем значение, на которое установлена ​​переменная.

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

USER Это имя пользователя используемой в данный момент учетной записи.

PATH Это список путей, по которым система будет проверять наличие исполняемых файлов при подаче команды.

HOME Текущая домашняя директория для пользователя.

PWD Текущий рабочий каталог.

PS1 Текущие настройки командной строки.

EDITOR Редактор по умолчанию для текстовых файлов.

TERM Тип подключенного терминала.

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

Скрипты, зависящие от пути

Распространенной ошибкой в ​​отношении переменных среды является создание сценариев для использования другими пользователями. Поскольку каждый пользователь может указать свой собственный путь, возможно, что такой путь, создающий сценарий, не установлен для другого пользователя, что может означать, что вызываемый исполняемый файл не может быть найден для этого пользователя, что приводит к сбою сценария. Часто это проблема, которая может привести к остановке задач cron, поскольку пользователь root может иметь меньший набор путей в переменной PATH. Аналогичные проблемы могут возникнуть, если вы полагаетесь на поиск определенного файла в домашнем каталоге пользователя, у другого пользователя может не быть файла в своем домашнем каталоге.

Экспорт переменных PATH

Как указывалось ранее, переменные среды могут быть изменены пользователем: это делается с помощью команды экспорта. Хотя переменные можно установить с помощью команды set или просто присвоив им что-либо, они не могут использоваться другими процессами, если не используется команда экспорта. Например:

export PATH=/home/hayden/bin

Это установит переменную PATH для поиска в каталоге bin в моем домашнем каталоге. Однако проблема с этой командой заключается в том, что она перезаписывает предыдущее содержимое переменной PATH, что, вероятно, позже вызовет проблемы. Итак, чтобы сохранить предыдущее содержимое, нам нужно включить переменную PATH в команду следующим образом:

export PATH=${PATH}:/home/hayden/bin

BASH читает ${PATH} как означающую замену его содержимым переменной, указанной в фигурных скобках — в данном случае содержимым переменной окружения PATH. Мы использовали : после этого, так как каждый отдельный путь в переменной PATH должен быть разделен двоеточием, а затем путь, который мы хотели добавить, находится в конце.

Здесь следует отметить, что любые параметры переменных среды, которые вы изменяете, действительны только для сеанса, в котором вы находитесь, и любых процессов, порожденных им. Любые настройки, которые вы хотите сохранить после выхода из системы и повторного входа в систему, должны быть записаны в ваш файл .bash_profile, содержащийся в вашем домашнем каталоге. Это так же просто, как добавить в этот файл командную строку, которую вы использовали в терминале.

Маловероятно, что вам придется часто вносить изменения в переменные среды, на самом деле в большинстве систем вы, вероятно, никогда не будете их изменять. Однако важно знать о них и о том, как приложения в вашей системе могут их использовать, чтобы помочь отладить некоторые проблемы, с которыми вы можете столкнуться, даже если вам не нужно их изменять самостоятельно.

Никогда не пропустите ни одного поста. Подпишитесь на еженедельную рассылку 100 ТБ.

Первоначально опубликовано на blog.100tb.com.