April 10

Урок 5. Переменные окружения. Создание и изменение.

Материал написан автором канала Пингвины летят в Калифорнию

📚 | Оглавление

  1. Как создать переменную
  2. Системные переменные
    1. Переменная PATH
  3. Работа переменных
  4. Домашнее задание

Переменная (environment variable, или просто env)- именованное место в памяти для хранения изменяемых данных.
Имя переменной может состоять из букв, цифр, знака подчеркивания. Имя не должно начинаться с цифры.

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

Условно все переменные можно заменить на 2 типа:
1. Пользовательские - те что создал пользователь
2. Системные - установлены самой системой


✏️ | Как создать переменную

Делается это очень просто:

MY_FIRST_ENV=QWEasdZXC

Т.е. просто пишите имя, которое хотите задать, знак "=" и значение.

ВАЖНО: при присвоении вокруг знака = не должно быть пробелов.

Также, если значение переменной содержит пробелы, то все значение нужно заключить в " или '. Например:

MY_ENV="Network 3 SCAM!"

Чтобы воспользоваться переменной, или узнать что в ней находится нужно "заплатить" за нее 😁

Перед именем переменной поставьте $

echo $MY_EVN

Чтобы изменить значение переменной, можно просто задать этой переменной новое значение.

Но что если мы хотим не перезаписать переменную, а добавить в нее какие то данные?

Тогда мы просто перезаписываем переменную с использованием старого значения:

MY_ENV="$MY_ENV Nexus too!"

Ещё в переменную можно закинуть вывод какой-то команды, для этого команду нужно завернуть в конструкцию $() например:

MY_ENV=$(ls)

В данном случае переменная MY_ENV будет содержать результат выполнения команды ls


📘 | Системные переменные

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

HOME - домашний каталог, то же самое что и ~

HOSTNAME - название этого компьютера

USER - имя пользователя в системе.
PWD - текущий каталог.

OLDPWD - предыдущий каталог (именно с помощью этой переменной команда cd - определяет, куда нужно перейти.

PATH - одна из самых важных переменных в системе. Она задает каталоги, в которых система будет искать запускаемую программу, если не указан полный путь.


🔍 | Переменная PATH

По умолчанию переменная содержит следующие каталоги:

PATH=/usr/local/bin:/usr/bin:/bin

Обратите внимание, пути разделяются символом двоеточие.

Как я уже говорил ранее, ls, rm и т.д. это все программы, которые мы запускаем. Бинарники этих и многих других программ находятся в директории /usr/bin/, поэтому мы не указываем путь к программе ls когда ее запускаем.

Если в системе есть несколько программ с одинаковым названием - будет запущена программа из каталога, который стоит "первый в очереди". В нашем случае система сначала зайдет в папку /usr/local/bin, и если найдёт там программу, то запустит ее, а если не найдет, то перейдет в следующую папку /usr/bin/ и будет искать программу тут.

Именно из-за этой переменной возникает ошибка "command not found", если запрашиваемая программа не будет найдена.

Так часто бывает с Go Lang, при установке cosmos нод.
Мы добавляем папку, в которой находится бинарник проекта, часто это папка ~/go/bin/, в переменную PATH например:

PATH=$PATH:~go/bin

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


🔎 | Работа переменных

Стоит отметить, что когда мы создаём переменную так:

MY_ENV=QWEasdZXC

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

export MY_ENV=QWEasdZXC

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

Но если вы перезагрузите сервер, то переменная вновь исчезнет, а системные переменные будут сброшены.

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


📝| Домашнее задание

  • Создать переменную с любым значением
  • Изменить значение переменной
  • Добавить в переменную ее же значение 3 раза, через запятую
  • Создать вторую переменную с любим значением
  • Создать третью переменную значение которой будет состоять из значения первой и второй переменной.

Если тебе понравилось и ты хочешь узнать больше, подписывайся на канал Пингвины летят в Калифорнию