问题描述
如何列出所有变量名称及其当前值?
不仅包括$HOME
,$PWD
等,但您已定义的任何其他。
最佳解决方法
在终端中输入以下命令以打印所有环境变量:
printenv
有关此命令的更多信息,请阅读printenv
手册页。
要显示包括”shell variables”的列表,您可以输入下一个命令:
( set -o posix ; set ) | less
这不仅会显示shell变量,还会显示环境变量。
有关与此主题相关的更多信息,请参阅:
次佳解决方法
我知道这个问题相当老旧,但我想我可以添加一些有用的信息。
在上述所有方法中,建议的过程是:
-
启动一个终端
-
使用
env
或printenv
或其他方式显示环境变量
这些解决方案的问题是,您正在看到运行在终端中的shell的环境变量。您没有看到运行应用程序的环境变量,例如直接通过图形界面。
例如,如果您使用~/.profile
或.bashrc
或.zshenv
(取决于您的shell)来修改环境变量,如将路径添加到路径中,则这很明显。
要查看可直接在图形环境中启动的应用程序的环境变量,可以执行以下操作(在Gnome Shell中,我确信在所有其他DE中都有一个等效的方法):
-
按Alt-F2
-
运行命令
xterm -e bash --noprofile --norc
你现在有一个终端,它没有添加任何环境变量。您可以在这里使用env
列出您的所有环境变量:
很明显,新的shell将会有系统文件添加的环境变量,但是这些变量应该(通过继承)可用于系统中的所有程序。
我发布这个,因为这是我第四次再次搜索这个技巧,检查我的.pam_environment
文件。所以现在我会更快地找到它(在这个过程中,我希望帮助其他人……)
第三种解决方法
你可以看到declare
内建的所有变量。
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 way:
export asdf=qwer
env | grep asdf
示例输出:
asdf=qwer
它只显示导出的变量:non-exported变量通常不被视为”environment variables”。
首选printenv
,不是POSIX。两者似乎都没有参数做同样的事情:https://unix.stackexchange.com/questions/123473/what-is-the-difference-between-env-and-printenv
参考资料