Переменные среды - это некоторые специальные переменные, которые определены в оболочке и необходимы программам во время выполнения. Они могут быть определены системой или пользователем. Системные переменные - это те, которые устанавливаются системой и используются программами системного уровня.
Например, PWD Команда - это очень распространенная системная переменная, которая используется для хранения текущего рабочего каталога. Пользовательские переменные обычно устанавливаются пользователем либо временно для текущей оболочки, либо навсегда. Вся концепция установки и отключения переменных среды вращается вокруг некоторого набора файлов, нескольких команд и различных оболочек.
В более широком смысле переменная среды может быть трех типов:
Один, определенный для текущего сеанса. Эти переменные среды действуют только до текущего сеанса, будь то сеанс удаленного входа в систему или сеанс локального терминала. Эти переменные не указаны ни в каких файлах конфигурации, а создаются и удаляются с помощью специального набора команд.
Это переменные, которые определены для конкретного пользователя и загружаются каждый раз, когда пользователь входит в систему с использованием сеанса локального терминала или этот пользователь входит в систему с использованием сеанса удаленного входа. Эти переменные обычно устанавливаются и загружаются из следующих файлов конфигурации: .bashrc
, .bash_profile
, .bash_login
, .профиль
файлы, которые находятся в домашнем каталоге пользователя.
Это переменные среды, которые доступны для всей системы, то есть для всех пользователей, присутствующих в этой системе. Эти переменные присутствуют в общесистемных файлах конфигурации, находящихся в следующих каталогах и файлах: /etc/environment
, /etc/profile
, /etc/profile.d/
, /etc/bash.bashrc
. Эти переменные загружаются каждый раз, когда система включается и входит в систему локально или удаленно любым пользователем.
Здесь мы кратко опишем различные файлы конфигурации, перечисленные выше, которые содержат переменные среды, как общесистемные, так и специфичные для пользователя.
Этот файл является пользовательским файлом, который загружается каждый раз, когда пользователь создает новый локальный сеанс, то есть простыми словами открывает новый терминал. Все переменные среды, созданные в этом файле, будут действовать каждый раз при запуске нового локального сеанса.
Этот файл является файлом удаленного входа в систему для конкретного пользователя. Переменные среды, перечисленные в этом файле, вызываются каждый раз, когда пользователь входит в систему удаленно, то есть с использованием сеанса ssh. Если этого файла нет, система ищет либо .bash_login
или .профиль
файлы.
Этот файл является общесистемным файлом для создания, редактирования или удаления любых переменных среды. Переменные среды, созданные в этом файле, доступны для всех пользователей системы как локально, так и удаленно.
Общесистемный bashrc
файл. Этот файл загружается один раз для каждого пользователя, каждый раз, когда этот пользователь открывает сеанс локального терминала. Переменные среды, созданные в этом файле, доступны для всех пользователей, но только через локальный сеанс терминала. Когда к любому пользователю на этой машине осуществляется удаленный доступ через сеанс удаленного входа в систему, эти переменные не будут видны.
Общесистемный файл профиля. Все переменные, созданные в этом файле, доступны каждому пользователю в системе, но только в том случае, если сеанс этого пользователя вызывается удаленно, то есть через удаленный вход в систему. Любая переменная в этом файле не будет доступна для локального сеанса входа в систему, то есть когда пользователь открывает новый терминал в своей локальной системе.
Примечание: Переменные среды, созданные с использованием общесистемный или на уровне пользователя файлы конфигурации можно удалить, удалив их только из этих файлов. Просто после каждого изменения в этих файлах либо выйдите из системы и войдите снова, либо просто введите следующую команду в терминале, чтобы изменения вступили в силу:
$ источник
Переменные локальной среды можно создать с помощью следующих команд:
$ var = значение ИЛИ. $ export var = значение.
Эти переменные относятся к сеансу и действительны только для текущего сеанса терминала. Чтобы очистить эти переменные среды для всего сеанса, можно использовать следующие команды:
По умолчанию, "env"
команда перечисляет все текущие переменные среды. Но, если использовать с '-я'
switch, он временно очищает все переменные среды и позволяет пользователю выполнить команду в текущем сеансе при отсутствии всех переменных среды.
$ env –i [Var = Value]… аргументы команды…
Здесь, var = значение
соответствует любой локальной переменной среды, которую вы хотите использовать только с этой командой.
$ env –i bash.
Даст оболочку bash, которая временно не будет иметь никакой переменной окружения. Но при выходе из оболочки все переменные будут восстановлены.
Другой способ очистить локальную переменную среды - использовать команду unset. Чтобы временно отключить любую локальную переменную среды,
$ не установлено
Где, var-name
это имя локальной переменной, которую вы хотите отменить или очистить.
Другой менее распространенный способ - установить имя переменной, которую вы хотите очистить, на ''
(Пустой). Это очистит значение локальной переменной для текущего сеанса, для которого она активна.
ПРИМЕЧАНИЕ - ВЫ МОЖЕТЕ ДАЖЕ ИГРАТЬ И ИЗМЕНИТЬ ЗНАЧЕНИЯ СИСТЕМНЫХ ИЛИ ПОЛЬЗОВАТЕЛЬСКИХ ПЕРЕМЕННЫХ ОКРУЖАЮЩЕЙ СРЕДЫ, НО ИЗМЕНЕНИЯ БУДУТ ОТРАЖАТЬСЯ ТОЛЬКО В ТЕКУЩЕЙ ТЕРМИНАЛЬНОЙ СЕССИИ И НЕ БУДУТ ПОСТОЯННЫМИ.
В этом разделе мы узнаем, как устанавливать или отменять локальные, пользовательские и общесистемные переменные среды в Linux, с помощью следующих примеров:
а.) Здесь мы создаем локальную переменную VAR1
и установите любое значение. Затем мы используем unset, чтобы удалить эту локальную переменную, и в конце эта переменная удаляется.
$ VAR1 = 'TecMint - лучший сайт для статей о Linux' $ echo $ VAR1. $ unset VAR1. $ echo $ VAR1.
б.) Другой способ создания локальной переменной - использовать экспорт
команда. Созданная локальная переменная будет доступна для текущего сеанса. Чтобы отключить переменную, просто установите значение переменной на ''
.
$ export VAR = 'TecMint - лучший сайт для статей о Linux' $ echo $ VAR. $ VAR = $ echo $ VAR.
c.) Здесь мы создали локальную переменную VAR2
и установите для него значение. Затем, чтобы запустить команду, временно очищающую все локальные и другие переменные среды, мы выполнили 'env –i'
команда. Эта команда здесь выполняет оболочку bash, очищая все другие переменные среды. После входа 'выход'
в вызванной оболочке bash все переменные будут восстановлены.
$ VAR2 = 'TecMint - лучший сайт для статей о Linux' $ echo $ VAR2. $ env -i bash. $ echo $ VAR2
а.) Изменить .bashrc
файл в вашем домашнем каталоге, чтобы экспортировать или установить переменную среды, которую вам нужно добавить. После этого источник файл, чтобы изменения вступили в силу. Тогда вы увидите переменную ('КОМПАКТ ДИСК'
в моем случае) вступает в силу. Эта переменная будет доступна каждый раз, когда вы открываете новый терминал для этого пользователя, но не для сеансов удаленного входа в систему.
$ vi .bashrc.
Добавьте следующую строку в .bashrc
файл внизу.
export CD = 'Это TecMint Home'
Теперь выполните следующую команду, чтобы принять новые изменения и протестировать их.
$ source .bashrc $ echo $ CD.
Чтобы удалить эту переменную, просто удалите следующую строку в .bashrc файл и повторно его источник:
б.) Чтобы добавить переменную, которая будет доступна для сеансов удаленного входа в систему (например, когда вы отправляете ssh пользователю из удаленной системы), измените .bash_profile
файл.
$ vi .bash_profile.
Добавьте следующую строку в .bash_profile
файл внизу.
export VAR2 = 'Это TecMint Home'
При получении этого файла переменная будет доступна при использовании ssh для этого пользователя, но не при открытии нового локального терминала.
$ source .bash_profile $ echo $ VAR2.
Здесь, VAR2
изначально недоступен, но при выполнении ssh для пользователя на локальном хосте переменная становится доступной.
$ ssh [электронная почта защищена]
$ echo $ VAR2.
Чтобы удалить эту переменную, просто удалите строку в .bash_profile
файл, который вы добавили, и повторно загрузите файл.
ПРИМЕЧАНИЕ: Эти переменные будут доступны каждый раз, когда вы войдете в систему как текущий пользователь, но не для других пользователей.
а.) Чтобы добавить общесистемную переменную без входа в систему (то есть такую, которая доступна для всех пользователей, когда любой из них открывает новый терминал, но не когда какой-либо пользователь машины получает удаленный доступ), добавьте переменную в /etc/bash.bashrc
файл.
export VAR = 'Это общесистемная переменная'
После этого загрузите файл.
$ источник /etc/bash.bashrc
Теперь эта переменная будет доступна каждому пользователю при открытии любого нового терминала.
$ echo $ VAR. $ sudo su. $ echo $ VAR. $ su - $ echo $ VAR.
Здесь такая же переменная доступна для корень пользователь, а также обычный пользователь. Вы можете проверить это, войдя в систему под другим пользователем.
б.) Если вы хотите, чтобы любая переменная среды была доступна, когда любой из пользователей на вашем компьютере удаленно вошел в систему, но не при открытии нового терминала на локальном компьютере, тогда вам необходимо отредактировать файл - '/ etc / profile'
.
export VAR1 = 'Это общесистемная переменная только для удаленных сеансов'
После добавления переменной просто повторно загрузите файл. Тогда переменная станет доступной.
$ source / etc / profile. $ echo $ VAR1.
Чтобы удалить эту переменную, удалите строку из /etc/profile
файл и повторно его источник.
c.) Однако, если вы хотите добавить любую среду, которая должна быть доступна во всей системе, на обоих удаленных сеансы входа в систему, а также локальные сеансы (т.е. открытие нового окна терминала) для всех пользователей, просто экспортируйте переменную в /etc/environment файл.
export VAR12 = "Я доступен везде"
После этого просто загрузите файл, и изменения вступят в силу.
$ source / etc / environment. $ echo $ VAR12. $ sudo su. $ echo $ VAR12. $ exit. $ ssh localhost. $ echo $ VAR12.
Здесь, как мы видим, переменная среды доступна для обычного пользователя, пользователя root, а также в сеансе удаленного входа в систему (здесь для localhost).
Чтобы очистить эту переменную, просто удалите запись в /etc/environment файл и повторно загрузите его или войдите снова.
ПРИМЕЧАНИЕ: Изменения вступают в силу, когда вы исходите из файла. Но в противном случае вам может потребоваться выйти и снова войти в систему.
Таким образом, это несколько способов изменить переменные среды. Если вы найдете какие-либо новые и интересные уловки, упомяните их в своих комментариях.