Как перечислять все имена переменных и их текущие значения?
Включая не только $HOME, $PWD и т. д., но и любые другие, которые вы определили.
Я знаю, что этот вопрос довольно старый и ответил, но я думаю, что могу добавить немного полезной информации.
Во всех описанных выше методах предлагается следующая процедура: [!d1 ] запуск терминала показывает переменные среды с использованием env или printenv или любого другого
. Проблема этих решений заключается в том, что вы видите переменные среды оболочки, которая работает в Терминал. Вы не видите переменные среды, доступные для запуска приложения, например, непосредственно графическим интерфейсом.
Это заметно, если вы, например, используете ваши ~/.profile или .bashrc или .zshenv (в зависимости от вашей оболочки), чтобы изменить переменные среды - например, классическое дополнение каталогов на путь.
Чтобы увидеть переменные среды, доступные для приложения, запущенные непосредственно в графической среде, вы можете сделать следующее (в Gnome Shell, я уверен, что есть эквивалентный метод во всех других DE):
запустите терминал запустите команду xterm -e bash --noprofile --norcТеперь у вас есть терминал с оболочкой, которая не добавила никаких переменных окружения. Здесь вы можете использовать env для перечисления всех переменных среды:
Очевидно, что новая оболочка будет иметь переменные среды, добавленные системными файлами, но эти переменные должны быть доступны ( по наследованию) для всех программ в системе.
Я публикую это, потому что в четвертый раз мне нужно снова искать этот трюк, проверяя файл .pam_environment. Так что теперь я найду его быстрее (и в процессе, надеюсь, кому-то помогу ...)
Вы можете увидеть все переменные с встроенным declare.
declare -p
Если вас интересуют только переменные среды, используйте
declare -xp
Run 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
и т. д.
надеюсь, что это поможет.
В 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. Оба, кажется, делают то же самое без аргументов: POSIX 7 way
Если вы хотите использовать определенную переменную окружения, а не печатать их все с помощью printenv, вы можете, например, распечатать ее, выполнив echo "$PWD"