Введение
Переменные, в том числе и переменные окружения, являются фундаментальными элементами операционных систем и играют важные роли:
- Работа с данными: переменные служат контейнерами в памяти для хранения и манипулирования данными, позволяя программам работать со значениями на протяжении всего времени выполнения;
- Динамическая адаптивность: благодаря использованию переменных программы приобретают динамическое поведение, позволяющее им гибко подстраиваться под различные входные данные и условия;
- Читабельность кода: присвоение переменным значимых имен улучшает читаемость кода, облегчая его понимание и работу с ним разработчикам и специалистам DevOps;
- Многократное использование кода: переменные способствуют многократному использованию кода, поскольку хранят данные в одном месте, на которые можно ссылаться и использовать многократно, сокращая избыточность и способствуя эффективному программированию;
- Передача параметров: переменные позволяют передавать информацию между различными частями программы или функциями, что дает возможность функциям получать входные данные и возвращать результаты в вызывающий код;
- Управление конфигурацией: переменные среды, в частности, ценны для хранения конфигурационных настроек и общесистемной информации, обеспечивая удобный способ модификации поведения программы без внесения изменений в исходный код.
Переменные окружения играют ключевую роль в системе Linux, обеспечивая хранение данных, настройку поведения программ и читаемость кода. Они незаменимы при разработке программного обеспечения и системном администрировании, обеспечивая эффективность и адаптивность вычислений.
Тип переменных окружения
Существует три типа переменных окружения, которые делятся по области применения во всей операционной системе. Прежде всего, рассмотрим локальные переменные окружения. Они представляют собой ячейки памяти, которые создаются текущей сессией и не записываются в конфигурационные файлы. Вместо этого они хранятся в кэш-памяти и удаляются, по завершению соединения и выхода из системы, с помощью специальных команд.
Если вы хотите продолжить использование этих переменных или вам необходимо сохранить процессы в рабочем состоянии, вы можете воспользоваться утилитой screen. Они создают виртуальный терминал и позволяют отсоединиться от системы. Рассмотрим, как управлять этим типом переменных: создавать, удалять и изменять.
export VARIABLE_LABEL=value
Также вывести переменную на экран можно с помощью следующей команды:
echo $VARIABLE_LABEL

Эта команда устанавливает локальную переменную окружения для текущего сеанса. Если задать их в утилите или в программе, то они будут доступны в соответствующем процессе. При завершении процесса переменная также перестает существовать, и ее значения не передаются другим процессам или новым сеансам. Если вы хотите изменить значение, то это можно сделать с помощью той же команды, которая была описана ранее:
export VARIABLE_LABEL=new-value!
Но если вы хотите удалить эту переменную, то нужно ввести следующее:
unset VARIABLE_LABEL
Или можно назначить пустое поле для быстрого удаления значения:
VARIABLE_LABEL=
Однако представим себе ситуацию, когда необходимо удалить на некоторое время переменную и вернуть ее значение, как мы видели ранее. Для этого мы можем запустить утилиту, env и указать любую команду, затем запуститься ее процесс без аргументов:
env -i bash

Давайте масштабируем диапазон использования и посмотрим на переменные окружения пользователя, которые реализуют и сохраняют каждый сеанс, в сравнении с переменными локального окружения для одного пользователя. Схема процесса достаточно похожа, но теперь мы записываем в файл ту команду, которая запускается каждый раз при входе в систему.
Таким образом, это автоматизирует процесс запуска команды в файле и делает его более простым. Мы можем работать с двумя основными файлами: .bashrc, который используется для настройки локального пользователя, и .bash_profile, который используется для подключения удаленного пользователя по протоколу SSH. Если последний из них по какой—либо причине окажется недоступным, то система будет искать .bash_login и .profile. Найти эти файлы можно с помощью следующей команды:
find . -name bashrc

Если вы не можете найти нужный файл переменных удаленных подключений для пользователя, попробуйте поискать в .bash_login и .profile. Отредактируем файл и добавим необходимые переменные:
nano ~/.bashrc

Запишем в файл команду, приведенную ниже:
export GG='Nice to meet you!'
Сохраним файл командой после закрытия текстового редактора:
source ~/.bashrc

И последнее, учитывая, что переменная окружения является глобальной, мы подчеркиваем и напоминаем, что имена и метки переменных указывают на область их использования. В настоящее время область использования охватывает всю систему от любых пользователей. Мы можем редактировать их файл bash.bashrc, окружение, профиль. Они также делятся на несколько пунктов для конкретного типа подключения пользователя. Например, мы можем изменить окружение, и это повлияет на всех пользователей в системе, независимо от типа их подключения:
nano /etc/environment
Введите строку ниже и сохраните файл с помощью комбинаций кнопок Ctrl+O:
export gg='Jay's dog byte me! '
Применение изменений, внесенных командой:
source /etc/environment

Для пользователя, подключающегося только локально, мы можем настроить bash.bashrc с той же командой для ввода:
export gg='Jay's dog byte me! '
source /etc/bash.bashrc
Для пользователя, подключенного только удаленно и имеющего доступ ко всем системам, мы также можем изменить profile с помощью той же команды:
export gg='Jay's dog byte me! '
source /etc/profile
Для удаления переменной необходимо стереть ее из всех файлов, в которые она была добавлена, или воспользоваться командой unset, как мы уже описывали ранее.

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