export VARIABLE_NAME='some value'это способ установить переменную среды в любой POSIX-совместимой оболочке ( sh, dash, bash, ksh, и т.д .; также ЗШ). Если переменная уже имеет значение, вы можете использовать ее, export VARIABLE_NAMEчтобы сделать ее переменной среды без изменения ее значения.
Оболочки Bourne до POSIX не поддерживали это, поэтому вы увидите сценарии, которые избегают export VARIABLE_NAME='some value'и используют VARIABLE_NAME='some value'; export VARIABLE_NAMEвместо этого. Но снаряды до POSIX Борна в наше время чрезвычайно редки.
setenv VARIABLE_NAME='some value'синтаксис csh для установки переменной окружения setenvне существует в sh, а csh крайне редко используется в сценариях и превосходит bash для интерактивного использования в течение последних 20 лет (и zsh еще дольше), поэтому вы можете забыть об этом, если не столкнетесь с ним.
Команда envочень редко полезна, за исключением строк Шебанга . Когда вызывается без аргументов, он отображает среду, но exportделает это лучше (сортируется и часто заключается в кавычки для устранения неоднозначности строк в значениях и строк, которые разделяют значения). Когда вызывается с аргументами, он запускает команду с дополнительными переменными окружения, но та же команда без нее envтакже работает ( VAR=value mycommandзапускается mycommandс VARустановленным значением value, как и env VAR=value mycommand). Причиной envполезности строки shebang является то, что она выполняет PATHпоиск, и при вызове с именем команды не происходит ничего другого. Команда envможет быть полезна для запуска команды только с несколькими переменными среды с-iили без параметров для отображения среды, включая переменные с недопустимыми именами, которые оболочка не импортирует.
VAR=asdfдействительно ли обновляется окружение, если оноVARуже было в окружении. (Это не было правдой в оригинальной оболочке Bourne.)