Я немного растерялся относительно цели set
и export
в Bash (и я думаю, что, вероятно, и другие оболочки).
Я думаю, что это для установки переменных среды, но это можно сделать только с помощью VARIABLE=VALUE
, верно?
Также печатать set
и export
самостоятельно показывать разные значения.
Так какова их цель?
Ответы:
export
экспортирует в дочерние элементы текущего процесса, по умолчанию они не экспортируются. Например:set
с другой стороны, устанавливает атрибуты оболочки, например, позиционные параметры.Обратите внимание, что
baz
это не присваиваетсяfoo
, оно просто становится буквальным позиционным параметром. Есть много других вещей, которыеset
можно сделать (в основном опции оболочки), смотритеhelp set
.Что касается печати, то
export
без вызова аргументов печатаются все переменные в среде оболочки.set
также печатает переменные, которые не экспортируются. Он также может экспортировать некоторые другие объекты (хотя вы должны заметить, что это не переносимо), смотритеhelp export
.источник
foo=bar command
. Это неявный экспорт для одной команды. Вторая возможность заключается в том, чтоhttp_proxy
она уже экспортирована в вашу среду до того, как вы ее измените.Смотрите
help set
: set используется для установки атрибутов оболочки и позиционных атрибутов.Переменные, которые не экспортируются, не наследуются дочерними процессами.
export
используется для обозначения переменной для экспорта.источник