Урок 5. Переменные окружения. Создание и изменение.
Материал написан автором канала Пингвины летят в Калифорнию
📚 | Оглавление
Переменная (environment variable, или просто env)- именованное место в памяти для хранения изменяемых данных.
Имя переменной может состоять из букв, цифр, знака подчеркивания. Имя не должно начинаться с цифры.
Как и в файлах регистр важен. Обычно, переменные набираются большими буквами, для того, чтобы их легче было отличать от ключевых слов и программ.
Условно все переменные можно заменить на 2 типа:
1. Пользовательские - те что создал пользователь
2. Системные - установлены самой системой
✏️ | Как создать переменную
MY_FIRST_ENV=QWEasdZXC
Т.е. просто пишите имя, которое хотите задать, знак "=" и значение.
ВАЖНО: при присвоении вокруг знака = не должно быть пробелов.
Также, если значение переменной содержит пробелы, то все значение нужно заключить в " или '. Например:
Чтобы воспользоваться переменной, или узнать что в ней находится нужно "заплатить" за нее 😁
Перед именем переменной поставьте $
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 раза, через запятую
- Создать вторую переменную с любим значением
- Создать третью переменную значение которой будет состоять из значения первой и второй переменной.
Если тебе понравилось и ты хочешь узнать больше, подписывайся на канал Пингвины летят в Калифорнию