如何列出所有变量名称及其当前值?
如何列出所有变量名称及其当前值?
不仅包括$HOME
, $PWD
等,还包括您定义的任何其他内容。
对于bash 🙁 Ubuntu中的标准shell)
在终端中输入以下命令以打印所有环境变量:
printenv
有关此命令的更多信息,请阅读printenv
手册页 。
要显示包含“shell变量”的列表,您可以输入下一个命令:
( set -o posix ; set ) | less
这不仅会显示shell变量,还会显示环境变量。
有关此主题的更多信息,请阅读:
- 如何在bash中列出脚本中声明的变量? 来自SO和
- 如何在 UnixSE中 打印bash中定义的所有环境变量(但不一定是导出的)
- 环境变量vs Shell变量,有什么区别?
对于zsh 🙁高级shell)
使用以下命令:
( setopt posixbuiltin; set; ) | less
有关ZSH选项的更多信息,请参见zshoptions
手册页 。
我知道这个问题已经很老了并且已经回答了,但我想我可以添加一些有用的信息。
在上述所有方法中,建议的过程是:
- 推出一个终端
- 使用
env
或printenv
显示环境变量
这些解决方案的问题在于您正在查看运行到终端的shell的环境变量。 您没有看到应用程序可用的环境变量,例如,直接由图形界面运行。
例如,如果您使用~/.profile
,或.bashrc
或.zshenv
(取决于您的shell)来修改环境变量 – 就像路径中经典添加目录一样,这是显而易见的。
要查看应用程序可用的环境变量直接在图形环境中启动,您可以执行以下操作(在Gnome Shell中,我确信在所有其他DE中存在等效方法):
- 按Alt-F2
- 运行命令
xterm -e bash --noprofile --norc
您现在有一个带有shell但没有添加任何环境变量的终端。 您可以在此处使用env
列出所有环境变量:
显然,新shell将具有系统文件添加的环境变量,但是这些变量应该可用(通过inheritance)到系统中的所有程序。
我发布这个是因为这是我第四次再次搜索这个技巧,检查我的.pam_environment
文件。 所以现在我会发现它更快(在此过程中,我希望帮助其他人…)
您可以使用declare
builtin查看所有变量。
declare -p
如果您只对环境变量感兴趣,请使用
declare -xp
运行help declare
以查看其他选项。
要使用CTRL + ALT + T列出终端中的环境变量,可以使用env
命令。
例如 :
[raja@localhost ~]$ env XDG_VTNR=1 SSH_AGENT_PID=3671 XDG_SESSION_ID=3 HOSTNAME=localhost.localdomain IMSETTINGS_INTEGRATE_DESKTOP=yes GPG_AGENT_INFO=/home/raja/.gnupg/S.gpg-agent:3691:1 GLADE_PIXMAP_PATH=: TERM=xterm-256color SHELL=/bin/bash XDG_MENU_PREFIX=xfce- DESKTOP_STARTUP_ID= HISTSIZE=1000 XDG_SESSION_COOKIE=0250277dd805498381e96c05d88068b0-1364679772.845276-1676152201 WINDOWID=65011716 GNOME_KEYRING_CONTROL=/home/raja/.cache/keyring-N3QoQ2 IMSETTINGS_MODULE=none QT_GRAPHICSSYSTEM_CHECKED=1 USER=raja
等等
希望有所帮助。
在使用compgen的bash中:
compgen -v | while read line; do echo $line=${!line};done
env是一种POSIX 7方式 :
export asdf=qwer env | grep asdf
样本输出:
asdf=qwer
它只显示导出的变量:非导出变量通常不被视为“环境变量”。
喜欢over printenv
,这不是POSIX。 两者似乎都没有参数做同样的事情: https : //unix.stackexchange.com/questions/123473/what-is-the-difference-between-env-and-printenv
如果你想要一个特定的环境变量,而不是用printenv
打印它们,你可以通过echo "$PWD"
来打印它。