Как перечислить все имена переменных и их текущие значения?
Включая не только $HOME
, $PWD
и т. д., но и любые другие, которые вы определили.
Как перечислить все имена переменных и их текущие значения?
Включая не только $HOME
, $PWD
и т. д., но и любые другие, которые вы определили.
Введите следующую команду в терминале для печати всех переменных среды:
printenv
Дополнительные сведения об этой команде см. в странице printenv
man . р>
Чтобы отобразить список, включающий "переменные оболочки", вы можете ввести следующую команду:
( set -o posix ; set ) | less
Это покажет вам не только переменные оболочки, но и переменные среды.
Для получения дополнительной информации, связанной с этим тестом, читайте:
Я знаю, что этот вопрос довольно старый и ответил, но я думаю, что могу добавить немного полезной информации.
Во всех описанных выше методах предлагается следующая процедура:
env
, или
printenv
или что-то еще Проблема этих решений заключается в том, что вы видите переменные окружения оболочки, которая работает в терминале . Вы не видите переменные среды, доступные для запуска приложения, например, непосредственно графическим интерфейсом. Р>
Это заметно, если, например, вы используете свои ~/.profile
или .bashrc
или .zshenv
(в зависимости от вашей оболочки) для изменения переменных среды - например, классическое добавление каталогов к пути , Р>
Чтобы увидеть переменные среды, доступные для приложения, запущенные непосредственно в графической среде, вы можете сделать следующее (в Gnome Shell, я уверен, что есть эквивалентный метод во всех других DE):
xterm -e bash --noprofile --norc
Теперь у вас есть терминал с оболочкой, который не добавил никаких переменных среды. Вы можете использовать env
здесь, чтобы отобразить все переменные среды:
Очевидно, что новая оболочка будет иметь переменные окружения, добавленные системными файлами, но эти переменные должны быть доступны (по наследству) всем программам в системе в любом случае.
Я публикую это, потому что уже четвертый раз я снова ищу этот трюк, проверяя файл .pam_environment
. Так что теперь я найду его быстрее (и в процессе, надеюсь, кому-то помогу ...)
Вы можете видеть все переменные с встроенным declare
.
declare -p
Если вас интересуют только переменные среды, используйте
declare -xp
Запустите help declare
, чтобы узнать, что другие параметры.
Чтобы перечислить переменные среды в терминале с помощью CTRL + ALT + T , вы можете использовать команду env
.
, например:
[[email protected] ~]$ 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
и др. Р>
надеюсь, что это поможет.
В bash с использованием compgen:
compgen -v | while read line; do echo $line=${!line};done
env - способ POSIX 7 :
export asdf=qwer
env | grep asdf
Пример вывода:
asdf=qwer
В нем отображаются только экспортированные переменные: неэкспонированные переменные обычно не считаются «переменными среды».
Предпочитаете, что более printenv
, которое не является POSIX. Оба, кажется, делают то же самое без аргументов: Ссылка р>
Если вы хотите использовать определенную переменную окружения, а не печатать их с помощью printenv
, вы можете, например, распечатать ее, выполнив echo "$PWD"