Разница между set, export и env в Bash

Убунту 18

В мире сценариев Bash есть несколько команд, которые позволяют вам устанавливать переменные среды и управлять ими: set, export и env. Хотя они могут показаться похожими, каждый из них служит разным целям и имеет уникальные характеристики. В этой статье будут рассмотрены различия между этими тремя командами и приведены примеры того, когда и как использовать каждую из них.

Команда set используется для установки параметров оболочки и локальных переменных в скрипте или команде. Он не экспортирует переменные в среду автоматически. Команда экспорта используется, чтобы пометить переменную для экспорта в среду последовательно выполняемых команд. Он делает переменные доступными для дочерних процессов или других сценариев. Команда env используется для запуска команды в измененной среде, что позволяет вам устанавливать переменные среды для конкретной команды, не затрагивая текущую среду оболочки.

Понимание переменных среды

Прежде чем мы углубимся в различия между set, export и env, важно понять, что такое переменные среды. Переменные среды — это именованные значения, которые можно использовать для настройки и управления поведением вашей системы и работающих в ней приложений. Они хранятся в среде системы, и к ним могут обращаться сценарии и программы.

Команда set

Команда set в Bash используется для установки параметров оболочки и позиционных параметров. Его также можно использовать для установки локальных переменных в скрипте или команде.

установить VARNAME=”значение”

В этом примере VARNAME — это имя переменной, а «value» — присвоенное ей значение. Важно отметить, что переменные, установленные с помощью set, являются локальными для текущей оболочки. Они не экспортируются автоматически в среду последовательно выполняемых команд. Это делает set полезным для установки переменных, которые нужны только внутри текущего скрипта или команды.

Команда экспорта

Команда экспорта используется, чтобы пометить переменную для экспорта в среду последовательно выполняемых команд. Это означает, что любые переменные, отмеченные экспортом, доступны дочерним процессам или другим сценариям, которые вызываются из текущего сценария или команды.

экспорт VARNAME=”значение”

В этом примере VARNAME — это имя переменной, а «value» — присвоенное ей значение. Поскольку VARNAME экспортируется, оно будет доступно для любых команд или сценариев, выполняемых после этой строки.

Важно отметить, что экспорт — это встроенная команда Bash. Это означает, что он является частью самой оболочки и не требует для запуска отдельной программы. Это делает экспорт быстрее, чем env для установки переменных среды.

Команда окружения

Команда env используется для запуска команды в измененной среде. Его можно использовать для установки переменных среды для конкретной команды, не затрагивая текущую среду оболочки.

команда env VARNAME=”значение”

В этом примере VARNAME — это имя переменной, «value» — это присвоенное ей значение, а command — команда, которую нужно выполнить. Команда env изменяет среду, устанавливает переменную VARNAME, а затем выполняет команду.

Команда env — это отдельная программа, а не встроенная оболочка, как экспорт. Это означает, что он имеет больше накладных расходов, чем экспорт, и выполняется медленнее. Однако у env есть то преимущество, что он может изменять среду для одной команды, не затрагивая текущую среду оболочки.

Заключение

Хотя set, export и env могут использоваться для установки переменных среды в Bash, у каждого из них есть свои уникальные характеристики и применение. set полезен для установки локальных переменных, export используется для того, чтобы сделать переменные доступными для дочерних процессов, а env может изменять среду для одной команды. Понимание различий между этими командами поможет вам писать более эффективные и действенные сценарии Bash.

Команда set используется для установки локальных переменных в скрипте или команде, а команда export используется для пометки переменной для экспорта в среду последовательно выполняемых команд. Переменные, установленные с помощью set, являются локальными для текущей оболочки, тогда как переменные, отмеченные с помощью экспорта, доступны для дочерних процессов или других сценариев.

Нет, переменные, установленные с помощью set, являются локальными для текущей оболочки и не экспортируются автоматически в среду последующих выполняемых команд. Если вы хотите сделать переменную доступной для других скриптов или команд, вам нужно использовать команду экспорта.

Команда env используется для запуска команды в измененной среде и может использоваться для установки переменных среды для конкретной команды, не затрагивая текущую среду оболочки. С другой стороны, команда экспорта используется, чтобы пометить переменную для экспорта в среду последовательно выполняемых команд. env — отдельная программа, а export — встроенная команда Bash.

Да, есть разница в производительности между экспортом и env. Поскольку экспорт — это встроенная команда Bash, она работает быстрее, чем env, которая является отдельной программой. Однако разница в производительности может быть незначительной, если только вы не работаете с большим количеством переменных среды или часто не изменяете среду для нескольких команд.

Нет, команда env изменяет среду только для одной команды и не влияет на текущую среду оболочки. Если вы хотите изменить текущую среду оболочки, вам нужно использовать команду экспорта.

Похожие записи

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *