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

Материал из sysadm
Перейти к навигации Перейти к поиску
Строка 17: Строка 17:
 
'''При работе с переменными среды окружения важно понимать следующее (мое понимание, могу ошибаться):'''
 
'''При работе с переменными среды окружения важно понимать следующее (мое понимание, могу ошибаться):'''
  
# внутренние переменные шела не являются переменными среды окружения
+
* внутренние переменные шела не являются переменными среды окружения
# внутренняя переменная шела преобразуется в переменную среды окружения командой export
+
* внутренняя переменная шела преобразуется в переменную среды окружения командой export
# у каждого процесса свой независимый набор переменных среды окружения, который хранится в контексте процесса
+
* у каждого процесса свой независимый набор переменных среды окружения, который хранится в его контексте и доступен только ему
# при создании дочернего процесса, системный вызов ядра ОС копирует в его контекст все переменные среды окружения родительского процесса (может зависеть от типа и параметров системного вызова)
+
* при создании дочернего процесса, системный вызов ядра ОС копирует в его контекст все переменные среды окружения родительского процесса (может зависеть от типа и параметров системного вызова)
  
 
'''Разные способы запуска скрипта'''
 
'''Разные способы запуска скрипта'''

Версия 02:10, 17 октября 2025

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

# определение внутренней переменной шела (создание)
myvar=some text

# преобразование внутренней переменной шела в переменную среды окружения
export <переменная> [= <значение>]

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

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

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

  • внутренние переменные шела не являются переменными среды окружения
  • внутренняя переменная шела преобразуется в переменную среды окружения командой export
  • у каждого процесса свой независимый набор переменных среды окружения, который хранится в его контексте и доступен только ему
  • при создании дочернего процесса, системный вызов ядра ОС копирует в его контекст все переменные среды окружения родительского процесса (может зависеть от типа и параметров системного вызова)

Разные способы запуска скрипта

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

# создается новый процесс шела, в его контекст копируются переменные среды окружения родительского процесса (экспортированные переменные)
./myscript.sh
/bin/bash myscript.sh

# запуск скрипта в контексте текущего шела, новый процесс шела не создается
. myscript.sh
source myscript.sh