Str*_*sky 442 command-line bash environment-variables
如何列出所有变量名称及其当前值?
不仅包括$HOME
, $PWD
etc 还包括您定义的任何其他。
Luc*_*cio 593
对于 bash:(Ubuntu 中的标准 shell)
在终端中输入以下命令以打印所有环境变量:
printenv
Run Code Online (Sandbox Code Playgroud)
有关此命令的更多信息,请阅读printenv
手册页。
要显示包含“shell 变量”的列表,您可以输入下一个命令:
( set -o posix ; set ) | less
Run Code Online (Sandbox Code Playgroud)
这不仅会显示shell 变量,还会显示环境变量。
有关与此主题相关的更多信息,请阅读:
对于 zsh:(高级 shell)
使用以下命令:
( setopt posixbuiltin; set; ) | less
Run Code Online (Sandbox Code Playgroud)
有关 ZSH 选项的更多信息,请参见zshoptions
手册页。
gei*_*rha 69
您可以使用declare
内置函数查看所有变量。
declare -p
Run Code Online (Sandbox Code Playgroud)
如果您只对环境变量感兴趣,请使用
declare -xp
Run Code Online (Sandbox Code Playgroud)
运行help declare
以查看其他选项是什么。
Rma*_*ano 55
我知道这个问题已经很老了并且已经回答了,但我想我可以添加一些有用的信息。
在上述所有方法中,建议的程序是:
env
,
printenv
或其他方式显示环境变量这些解决方案的问题是您看到的是运行到终端中的 shell的环境变量。例如,您看不到直接通过图形界面运行的应用程序可用的环境变量。
例如,如果您使用~/.profile
, or .bashrc
, or .zshenv
(取决于您的 shell)来修改环境变量——就像经典的路径添加目录一样,这很明显。
要查看直接在图形环境中启动的应用程序可用的环境变量,您可以执行以下操作(在 Gnome Shell 中,我确定所有其他 DE 中都有等效的方法):
xterm -e bash --noprofile --norc
(或者,如果你没有xterm
,gnome-terminal -- bash --noprofile --norc
---感谢@Mike Nakis 的评论)。
您现在有一个没有添加任何环境变量的 shell 终端。您可以使用env
此处列出所有环境变量:
显然,新 shell 将具有由系统文件添加的环境变量,但无论如何,这些变量应该(通过继承)可用于系统中的所有程序。
我发布这个是因为这是我第四次必须再次搜索这个技巧,检查我的.pam_environment
文件。所以现在我会更快地找到它(在这个过程中,我希望能帮助别人......)
rɑː*_*dʒɑ 12
要列出与终端环境变量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
Run Code Online (Sandbox Code Playgroud)
等等。
希望有帮助。
小智 11
在 bash 中使用 compgen:
compgen -v | while read line; do echo $line=${!line};done
Run Code Online (Sandbox Code Playgroud)
这里的大多数解决方案要么仅打印环境变量,要么具有 env 或 (set -o posix; set) 不以易于解析的形式打印值的缺点(尝试打印变量 A=$'a\r\nb',它有多行...)。
下面是一个函数,它将以 POSIX 转义形式打印所有变量,每行一个变量(适用于简单文本变量,不适用于数组):
function dump_vars {
local VARNAME
compgen -v | while read -r VARNAME; do
printf "$VARNAME=%q\n" "${!VARNAME}"
done
}
Run Code Online (Sandbox Code Playgroud)
感谢 @tmgoblin 指出 compgen -v 的使用。