Создание пользовательских переменных

ShellBeginner
Практиковаться сейчас

Введение

В предыдущих лабораторных работах мы рассматривали существующие переменные, например User. Теперь создадим собственные «стикеры».

Переменная — это имя, в котором хранится некоторый текст.

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

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

В этой лабораторной работе вы:

  • создадите переменную MYCAFE;
  • прочитаете её содержимое;
  • «экспортируете» её;
  • проверите её работу во второй оболочке.

Создайте переменную

Создадим переменную с именем MYCAFE и присвоим ей значение "espresso".

Создание переменной похоже на запись на стикере.

Выполните команду:

MYCAFE="espresso"

Важно: не ставьте пробелы вокруг знака =.

  • Правильно: MYCAFE="espresso"
  • Неправильно: MYCAFE = "espresso"

Если использовать пробелы, оболочка воспримет MYCAFE как команду.

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

Выведите переменную

Теперь убедитесь, что значение сохранено.

Чтобы получить значение переменной, используйте знак доллара $.

Выполните команду:

echo $MYCAFE

Результат:

espresso

Если не указать $, команда echo просто выведет слово «MYCAFE».

Экспортируйте переменную

Сейчас MYCAFE — локальная переменная. Это как заметка в вашем личном блокноте.

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

Экспорт можно представить как указание оболочке: «Включай эту переменную при запуске дочерних программ». Без экспорта значение остаётся доступным только в текущей оболочке.

Выполните команду:

export MYCAFE

Теперь MYCAFE передаётся любой программе, которую вы запускаете из этой оболочки.

Проверьте переменную в дочерней оболочке

Проверим результат, запустив «дочернюю» оболочку.

  1. Запустите новый сеанс bash:
bash

Теперь вы находитесь внутри нового процесса оболочки.

  1. Проверьте, доступна ли ему переменная MYCAFE:
echo $MYCAFE

Результат:

espresso

Всё работает! Дочерняя оболочка унаследовала это значение.

Здесь ключевое слово — «наследование». Дочерние процессы обычно начинают работу с копией окружения родительского процесса, поэтому экспортированные переменные часто используют для передачи контекста сценариям и командам.

  1. Выйдите из дочерней оболочки и вернитесь в родительскую:
exit

Итоги

В этой лабораторной работе вы изучили жизненный цикл переменной:

  • Создание: MYCAFE="espresso" (без пробелов!)
  • Чтение: echo $MYCAFE (не забудьте $)
  • Передача: export MYCAFE (делает переменную доступной дочерним процессам)

Именно этот механизм система использует для настройки вашего окружения (PATH, USER и т. д.) ещё до вашего входа в систему!