Переменные среды окружения в Linux: различия между версиями

Материал из sysadm
Перейти к навигации Перейти к поиску
Строка 11: Строка 11:
 
echo ${my_var}
 
echo ${my_var}
  
# назначение переменной статуса экспортируемой
+
# назначение переменной статуса экспортируемой в дочерние процессы
# при создании дочернего процесса, в его контексте будут создаваться новые независимые копии экспортируемых переменных родительского процесса
+
export <переменная> [= <значение>]
 +
 
 
# по умолчанию, переменные родительского процесса не копируются в контекст дочернего процесса
 
# по умолчанию, переменные родительского процесса не копируются в контекст дочернего процесса
export <переменная> [= <значение>]
+
# если переменная экспортирована, то при создании дочернего процесса в его контекст будет копироваться новая независимая копия этой переменной
 
</pre>
 
</pre>
  

Версия 00:52, 17 октября 2025

Работа с переменными

# определение переменной (создание)
my_var=some text

# отмена определения переменной (удаление)
my_var=

# подстановка значения переменной
echo $my_var
echo ${my_var}

# назначение переменной статуса экспортируемой в дочерние процессы
export <переменная> [= <значение>]

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

При работе с переменными среды окружения важно понимать следующее:

  1. Переменные среды окружения не являются глобальными объектами операционной системы, каждый процесс имеет свой набор переменных. Изменение значения переменной в одном процессе не влечет за собой изменение значения в другом, даже если он является дочерним.
  2. При вызове дочернего процесса, операционная система копирует все переменные среды окружения родительского процесса в дочерний процесс
  3. В процессе командного интерпретатора переменные среды окружения создаются командой export. Не экспортированные переменные не являются переменными среды окружения.
# по умолчанию дочерние процессы не наследуют переменных родительского процесса
# чтобы установить наследование переменной дочерними процессами, ее необходимо экспортировать
export <переменная> [= <значение>]

# способы запуска скрипта, порождающие дочерний процесс шел
# все определения переменных и функций в родительский процесс не передаются
./myscript.sh
/bin/bash myscript.sh

# способы запуска скрипта текущим процессом шела
# все определения переменных и функций сохраняются в текущем шеле
. myscript.sh
source myscript.sh