Читая об этом вопросе: В Zsh, как я могу перечислить все переменные среды? , Я задавался вопросом, как я могу перечислить все переменные оболочки ?
Кроме того, относится ли различие между переменными оболочки и переменными среды к оболочкам, отличным от zsh?
Меня в первую очередь интересуют Bash и Zsh, но было бы здорово узнать, как это сделать в других основных оболочках.
источник
declare -p
сделать то же самоеset -o posix
не существует в Zsh;set
не выводит определения функций.set -o posix
это синтаксическая ошибка в большинстве оболочек.exec
, а переменные оболочки - нет.Есть много альтернатив:
printenv
окр
экспорт
устанавливать
также полезно для получения переменных оболочки.
Если вам нужна дополнительная информация (целое число, экспорт), вы должны вместо этого использовать
набрана
Преимущество экспорта заключается в том, что его вывод может быть немедленно считан обратно в оболочку.
Наконец, есть
compgen -v
который показывает все переменные, оболочку и окружение, без их значения или дополнительной информации. Вам нужно будет повторить $ VARIABLE_NAME, чтобы найти значение переменной. Но, по крайней мере, список полон. Это относится к Bash , а не Zsh .
источник
export
не имеет никаких преимуществ передset
, по крайней мере, в том, что касается цитирования для повторного входа в оболочку. Аprintenv
иenv
вовсе не о подставных переменных, хотя они делают часто совпадают с переменными окружения.С помощью
zsh
вы можете использоватьtypeset
, что дает больше информации, чемset
, например, тип переменных. Вы по-прежнему можете фильтровать вывод с помощьюgrep
илиsed
, в зависимости от того, что вы хотите. Переменные среды помечены какexported
в выходных данных.источник