Каково различие между ENV, объявите и compgen-v?

Я вижу это printenv и env дают тот же вывод. При рытье далее для получения полного списка переменных среды, я нашел declare -xp и команда отсюда:

compgen -v | while read line; do echo $line=${!line};done

Что является различиями между этими командами с точки зрения переменных среды.

3
задан 7 September 2017 в 14:30

1 ответ

env команда может выполнить другие команды с измененными средами. Если никакая команда не дана, env переменные среды печати (т.е. экспортируемые переменные). printenv может только распечатать переменные среды (это не может команды выполнения). Посмотрите этот вопрос U&L для большего количества различий между двумя.

compgen -v выводы только названия всех переменных оболочки, экспортируемых или нет. Вот почему необходимо использовать переменную косвенность (${!line}) получить значение переменной. compgen -v обычно используется для заполнения клавишей Tab.

declare -p детали печати переменных оболочки допускающим повторное использование способом, обычно в форме больше declare команды. -x опция ограничивает вывод экспортируемыми переменными. Вывод declare может быть eval'd позже, для возвращения данного состояния переменных.

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

export может использоваться для экспорта переменных или функций. С -p опция, это печатает экспортируемые переменные и функции.

5
ответ дан 1 December 2019 в 15:34

Другие вопросы по тегам:

Похожие вопросы: