如何列出所有变量名称及其当前值?

如何列出所有变量名称及其当前值?

不仅包括$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手册页 。

我知道这个问题已经很老了并且已经回答了,但我想我可以添加一些有用的信息。

在上述所有方法中,建议的过程是:

  • 推出一个终端
  • 使用envprintenv显示环境变量

这些解决方案的问题在于您正在查看运行到终端的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"来打印它。