Переменные окружения и оболочки
Оболочкой (shell) называется программа, которая является неким окружением для взаимодействия между пользователем и операционной системой через терминал.
Она интерпретирует команды, введённые в терминале, и передаёт их операционной системе для выполнения.
Чаще всего в качестве оболочки в Linux используется Bash.
Каждому пользователю в системе предоставляется оболочка по умолчанию. Её конфигурацию можно менять индивидуально.
Оболочка содержит локальные переменные, которые пользователь может задать сам.
Для начала нужно сказать, что переменная в любом смысле — это имя, под которым хранится какое-либо значение, которое может быть использовано для различных задач.
Например, скажем, что условная переменная x хранит значение 100500.
Или такая же условная переменная NAME хранит значение nikita.
Переменные оболочки (shell variables) в Linux — это такие переменные, которые хранят значения относительно текущего сеанса терминала.
Чтобы создать локальную переменную, откройте терминал и введите (без пробелов):
COUNTRY=RUSSIA
Теперь переменная COUNTRY будет доступна в текущей сессии и мы сможем её использовать для различных целей.
Например, мы можем вывести её значение на экран: echo $COUNTRY
Однако если вы закроете терминал и снова попробуете выполнить эту команду, то ничего не отобразится, поскольку переменная оболочки не сохраняется между сессиями.
Существуют также переменные окружения (environment variables) — это переменные, которые используются для конфигурации среды, в которой работают процессы.
Эти переменные содержат важную информацию, которая может быть использована программами и скриптами для настройки их работы.
Основные переменные окружения
- PATH — список директорий, через которые оболочка ищет необходимые для запуска какой-либо команды (например,
ls
) файлы. - HOME — хранит путь к нашей домашней директории, например,
/home/my_user
. - USER — содержит имя текущего пользователя.
Посмотреть весь список можно с помощью команды env
.
Когда мы используем команду cd
без аргументов, мы попадаем в свою домашнюю директорию. Это намного удобнее, чем вводить cd /home/my_user
.
Узнаёт путь к домашней директории она как раз благодаря имеющейся в системе переменной HOME.
Если нам необходимо добавить новую переменную окружения в систему, то используем команду:
export NUMBER=12345
— добавляем переменную с именем NUMBER, которая хранит значение 12345
.
Различия:
Переменные оболочки:
- Доступны только в текущей оболочке.
- Не наследуются дочерними процессами.
- Предназначены для хранения временных данных. Например: счетчики, флаги и т.п.
- Создаются простым присваиванием значения:
KEY=VALUE
. - Не наследуются дочерними процессами.
Это означает, что при создании дочернего процесса переменная не будет автоматически скопирована или доступна в новом процессе.
Переменные окружения:
- Доступны в текущей оболочке и наследуются всеми дочерними процессами.
- Позволяют передавать информацию программам и скриптам, запущенным из оболочки.
- Предназначены для настройки среды выполнения, определения путей к программам и библиотекам.
Примеры:PATH
,HOME
. - Используется команда
export
для добавления переменной оболочки в окружение:export KEY=VALUE
. - Позволяют программам и скриптам получать доступ к глобальным параметрам среды.
Задачи:
- Поменяйте переменную окружения HOME относительно текущей сессии, установив ей значение
/tmp
.
После этого проверьте, куда перемещает командаcd
без аргументов.
Перезапустите терминал и проверьте снова. - Создайте переменную оболочки, хранящую значение пути к файлу с логами авторизации.
Выполните команду просмотра содержимого этого файла, указав в качестве пути созданную переменную. - Установите python3 с помощью команды
sudo apt install python3
и запустите интерпретатор, введяpython3
.
После этого мы увидим в консоли>>>
.
Выйдем оттуда, нажав CTRL + D.
Теперь определите, как система понимает, какую программу нужно запустить, если мы просто пишемpython3
, не указывая никакие пути.
Попробуйте запустить этот интерпретатор, введя полный путь к нему.