我習慣於 bashset
命令僅列出環境設定列表,例如。路徑等。
然而,在我剛剛設定的 Ubuntu 系統上,執行set
轉儲 2000 行文本,包括許多這樣的函數:
dequote ()
{
eval printf %s "$1" 2> /dev/null
}
如何只列印環境變數?
答案1
預設set
顯示外殼變數,不僅僅是環境變數。在bash
函數中被視為變數的一部分。看https://askubuntu.com/questions/26318/environment-variable-vs-shell-variable-whats-the-difference。
如果您使用env
或printenv
他們會顯示環境匯出到子進程,這不是一定與您的環境相同bash
:
$ foo=1
$ printenv foo
$ export foo
$ printenv foo
1
bashdeclare
和typeset
內建函數可以列出所有類型的變量,以省略函數:
declare -F
它們的輸出採用適合在 shell 腳本中重新建立狀態的形式,因此有點冗長,儘管您可以區分數組、整數和其他類型(取決於版本)。另請參見 的輸出export -p
。
並從https://stackoverflow.com/questions/1305237/how-to-list-variables-declared-in-script-in-bash
你可以告訴 bash 使用 POSIX 模式,並且set
行為「正確」:
( set -o posix ; set )
它在子 shell 中運行,因此不會改變正在運行的 shell,並且它會正確拾取尚未導出到繼承環境中的變數。
答案2
如果您想列出所有環境變量,只需輸入env
。