Переменные среды окружения в Linux: различия между версиями
Перейти к навигации
Перейти к поиску
Admin (обсуждение | вклад) |
Admin (обсуждение | вклад) |
||
| Строка 11: | Строка 11: | ||
echo ${my_var} | echo ${my_var} | ||
| − | # назначение переменной статуса экспортируемой | + | # назначение переменной статуса экспортируемой в дочерние процессы |
| − | + | export <переменная> [= <значение>] | |
| + | |||
# по умолчанию, переменные родительского процесса не копируются в контекст дочернего процесса | # по умолчанию, переменные родительского процесса не копируются в контекст дочернего процесса | ||
| − | + | # если переменная экспортирована, то при создании дочернего процесса в его контекст будет копироваться новая независимая копия этой переменной | |
</pre> | </pre> | ||
Версия 00:52, 17 октября 2025
Работа с переменными
# определение переменной (создание)
my_var=some text
# отмена определения переменной (удаление)
my_var=
# подстановка значения переменной
echo $my_var
echo ${my_var}
# назначение переменной статуса экспортируемой в дочерние процессы
export <переменная> [= <значение>]
# по умолчанию, переменные родительского процесса не копируются в контекст дочернего процесса
# если переменная экспортирована, то при создании дочернего процесса в его контекст будет копироваться новая независимая копия этой переменной
При работе с переменными среды окружения важно понимать следующее:
- Переменные среды окружения не являются глобальными объектами операционной системы, каждый процесс имеет свой набор переменных. Изменение значения переменной в одном процессе не влечет за собой изменение значения в другом, даже если он является дочерним.
- При вызове дочернего процесса, операционная система копирует все переменные среды окружения родительского процесса в дочерний процесс
- В процессе командного интерпретатора переменные среды окружения создаются командой export. Не экспортированные переменные не являются переменными среды окружения.
# по умолчанию дочерние процессы не наследуют переменных родительского процесса # чтобы установить наследование переменной дочерними процессами, ее необходимо экспортировать export <переменная> [= <значение>] # способы запуска скрипта, порождающие дочерний процесс шел # все определения переменных и функций в родительский процесс не передаются ./myscript.sh /bin/bash myscript.sh # способы запуска скрипта текущим процессом шела # все определения переменных и функций сохраняются в текущем шеле . myscript.sh source myscript.sh