В чем разница между set
, env
, declare
и export
при установке переменной в Linux оболочки, такие как bash
?
linux
bash
shell
shell-script
user3872279
источник
источник
Ответы:
Кажется, что набор и объявление немного отличаются, причем набор более мощный.
См. «Объявить» в разделе https://www.gnu.org/software/bash/manual/bash.html#Bash-Builtins Declare: «Объявить переменные и дать им атрибуты. Если имена не заданы, отобразить значения переменных вместо.
Установите «set» в https://www.gnu.org/software/bash/manual/bash.html#The-Set-Builtin * set: «Это встроено настолько сложно, что оно заслуживает отдельного раздела. Set позволяет вам изменить значения параметров оболочки и установить позиционные параметры или отобразить имена и значения переменных оболочки. "
ENV - это переменная окружения в Bash: https://www.gnu.org/software/bash/manual/bash.html#Bash-Variables env - это команда Linux. Я думаю, что это хорошая ссылка: /unix/103467/what-is-env-command-doing
Я думал, что это хорошее объяснение экспорта: http://www.unix.com/302531838-post2.html
Также: https://www.gnu.org/software/bash/manual/bash.html#Bourne-Shell-Builtins * export (from Bourne): «Отметьте каждое имя, которое будет передано дочерним процессам в среде».
Заимствование кода из URL выше:
источник
declare
аset
аenv
? экспорт против объявить?Во-первых, вы должны понимать это
environment variables
иshell variables
не одно и то же.Затем вы должны знать, что оболочки имеют атрибуты, которые определяют, как это работает. Эти атрибуты не являются ни средой, ни переменными оболочки.
Теперь перейдем к ответу на ваш вопрос.
env
: без параметров показывает текущие переменные среды с их значениями; Однако может использоваться для установки переменной среды для одной команды с-i
флагомset
: без опций имя и значение каждой переменной оболочки отображаются * ~ после запускаman set
в rhel; также может быть использован для установки атрибута оболочки . Эта команда НЕ устанавливает окружение или переменную оболочки .declare
: без каких-либо опций, так же, какenv
; также может использоваться для установки переменной оболочкиexport
: делает переменные оболочки переменными средыКороче говоря:
set
не устанавливает ни shell, ни переменные окруженияenv
можно установить переменные среды для одной командыdeclare
устанавливает переменные оболочкиexport
делает переменные оболочки переменными средыNOTE
declare -x VAR=VAL
создает переменную оболочки, а также экспортирует ее, делая ее переменной среды.источник