Как перечислить все имена переменных и их текущие значения?

262

Как перечислить все имена переменных и их текущие значения?

Включая не только $HOME , $PWD и т. д., но и любые другие, которые вы определили.

    
задан Strapakowsky 30.03.2013 в 00:36
источник

7 ответов

375

Введите следующую команду в терминале для печати всех переменных среды:

printenv

Дополнительные сведения об этой команде см. в странице printenv man .

Чтобы отобразить список, включающий "переменные оболочки", вы можете ввести следующую команду:

( set -o posix ; set ) | less

Это покажет вам не только переменные оболочки, но и переменные среды.

Для получения дополнительной информации, связанной с этим тестом, читайте:

ответ дан Lucio 30.03.2013 в 01:21
источник
40

Я знаю, что этот вопрос довольно старый и ответил, но я думаю, что могу добавить немного полезной информации.

Во всех описанных выше методах предлагается следующая процедура:

  • запустить терминал
  • показать переменные среды, используя env , или printenv или что-то еще

Проблема этих решений заключается в том, что вы видите переменные окружения оболочки, которая работает в терминале . Вы не видите переменные среды, доступные для запуска приложения, например, непосредственно графическим интерфейсом.

Это заметно, если, например, вы используете свои ~/.profile или .bashrc или .zshenv (в зависимости от вашей оболочки) для изменения переменных среды - например, классическое добавление каталогов к пути ,

Чтобы увидеть переменные среды, доступные для приложения, запущенные непосредственно в графической среде, вы можете сделать следующее (в Gnome Shell, я уверен, что есть эквивалентный метод во всех других DE):

  • нажмите Alt-F2
  • запустите команду xterm -e bash --noprofile --norc

Теперь у вас есть терминал с оболочкой, который не добавил никаких переменных среды. Вы можете использовать env здесь, чтобы отобразить все переменные среды:

Очевидно, что новая оболочка будет иметь переменные окружения, добавленные системными файлами, но эти переменные должны быть доступны (по наследству) всем программам в системе в любом случае.

Я публикую это, потому что уже четвертый раз я снова ищу этот трюк, проверяя файл .pam_environment . Так что теперь я найду его быстрее (и в процессе, надеюсь, кому-то помогу ...)

    
ответ дан Rmano 12.10.2013 в 00:37
29

Вы можете видеть все переменные с встроенным declare .

declare -p

Если вас интересуют только переменные среды, используйте

declare -xp

Запустите help declare , чтобы узнать, что другие параметры.

    
ответ дан geirha 04.04.2013 в 20:28
11

Чтобы перечислить переменные среды в терминале с помощью 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

и др.

надеюсь, что это поможет.

    
ответ дан Ten-Coin 30.03.2013 в 16:41
3

В bash с использованием compgen:

compgen -v | while read line; do echo $line=${!line};done  
    
ответ дан tmgoblin 11.04.2014 в 20:53
2

env - способ POSIX 7 :

export asdf=qwer
env | grep asdf

Пример вывода:

asdf=qwer

В нем отображаются только экспортированные переменные: неэкспонированные переменные обычно не считаются «переменными среды».

Предпочитаете, что более printenv , которое не является POSIX. Оба, кажется, делают то же самое без аргументов: Ссылка     

ответ дан Ciro Santilli 包子露宪 六四事件 法轮功 30.11.2015 в 14:31
0

Если вы хотите использовать определенную переменную окружения, а не печатать их с помощью printenv , вы можете, например, распечатать ее, выполнив echo "$PWD"

    
ответ дан inigo333 08.01.2018 в 14:13