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