Разница между определением переменных Bash с экспортом и без него
Я добавил эту строку export HISTCONTROL=ignoredups в файл ~/.bashrc
, чтобы избежать дублирования записей в истории Bash на моем рабочем столе Linux. . Вы заметили, что я добавил к переменной HISTCONTROL
префикс export
? Знаете ли вы, для чего нужна опция "экспорт"
? Если вам интересно, в чем разница между определением переменных bash с опцией экспорта и без нее, читайте дальше!
Разница между определением переменных Bash с экспортом и без него
Мы определяем переменную с помощью export
, чтобы сделать ее доступной для всех подпроцессов (или дочерних процессов). Значение: если вы определяете переменную с помощью export
, как показано ниже,
export variable_name=value
Переменная доступна для любого подпроцесса, который вы запускаете из этого процесса оболочки.
Если вы определите переменную без export
, как показано ниже,
variable_name=value
Переменная ограничена оболочкой и недоступна ни для одного другого подпроцесса. Вы можете использовать его для временных переменных и/или переменных цикла.
Позвольте мне показать вам пример, чтобы вы могли лучше понять его.
Позвольте мне определить переменную с именем "ostechnix"
без "export"
, как показано ниже:
ostechnix="Welcome to ostechnix.com blog!"
Теперь отобразите значение с помощью команды «echo»:
echo $ostechnix
Он отобразит значение переменной ostechnix:
Welcome to ostechnix.com blog!
Теперь запустите новый сеанс оболочки Bash, выполнив следующую команду:
bash
Затем попробуйте отобразить значение переменной ostechnix с помощью команды echo
:
echo $ostechnix
Определить переменную bash без экспорта
Видеть? Ничего не возвращает! Вы видите только пустой вывод. Таким образом, доказано, что когда мы определяем переменную без export
, она не будет доступна дочерним процессам.
Давайте снова определим ту же переменную с опцией export
:
export ostechnix="Welcome to ostechnix.com blog!"
Отобразите значение переменной:
echo $ostechnix
Пример вывода:
Welcome to ostechnix.com blog!
Запустите новый сеанс оболочки:
bash
Попробуйте еще раз отобразить значение переменной:
echo $ostechnix
Теперь он вернет значение.
Разница между определением переменных Bash с экспортом и без него
Следовательно, экспорт делает переменную доступной для любых других дочерних процессов в этой среде оболочки.