Я искал env
для отображения всех переменных среды. Мне довелось выдать команду set
, и она, похоже, «катает» скрипт на консоли. Почему это происходит?
Эта справочная страница , кажется, не объясняет это.
If no options or arguments are supplied, set displays the names
and values of all shell variables
Как Frank Schrijver объяснил в своем комментарии, удар, встроенный set
, выведет все переменные оболочки (переменные, которые только "существуют" в том времени выполнения), и весь , оболочка функционирует также , снова функционирует инициализированная и существующая в том конкретном процессе оболочки.
Так, например, Вы будете видеть функции как
_tilde ()
{
...
}
, который является функцией, цель которой, обеспечивают заполнение клавишей Tab на ~
символ для Вашего строчного редактора удара.
действительно даже документация удара для set
, видимый путем выполнения команды
man bash | less '+/^\s*set \[--'
не упоминает факт, это печатает все функции оболочки по умолчанию, но поскольку Вы обнаружили, и другие указали на него - это действительно печатает функции оболочки также.
set
оболочка встроенная команда. При издании этого на командной строке Вы видите все в своей текущей среде. Это будет включать любые функции, которые Вы загрузили. Обратите внимание, что большинство дистрибутивов будет включать по крайней мере несколько полезных функций в профили оболочки, и если у Вас будет установленное завершение удара, то у Вас будут ставриды их.
env
двоичный файл. Это загружается и выполняется оболочкой, точно так же, как любая другая команда. Поэтому это только видит любые переменные среды, которые Вы экспортировали, который должен исключить любые функции из Вашей среды оболочки.