it-swarm.com.de

Wie liste ich alle Variablennamen und ihre aktuellen Werte auf?

Wie liste ich alle Variablennamen und ihre aktuellen Werte auf?

Dies schließt nicht nur $HOME, $PWD usw. ein, sondern auch alle anderen, die Sie definiert haben.

340
Strapakowsky

Für Bash: (die Standard-Shell in Ubuntu)

Geben Sie den folgenden Befehl in ein Terminal ein, um alle Umgebungsvariablen zu drucken:

printenv

Weitere Informationen zu diesem Befehl finden Sie in der Manpage printenv .


Um eine Liste mit den "Shell-Variablen" anzuzeigen, geben Sie den folgenden Befehl ein:

( set -o posix ; set ) | less

Dies zeigt Ihnen nicht nur die Shell-Variablen, sondern auch die Umgebungsvariablen.

Weitere Informationen zu diesem Thema finden Sie unter:


Für zsh: (eine erweiterte Shell)

Verwenden Sie den folgenden Befehl:

( setopt posixbuiltin; set; ) | less

Weitere Informationen zu ZSH-Optionen finden Sie unter zshoptions man page .

469
Lucio

Ich weiß, dass diese Frage ziemlich alt und beantwortet ist, aber ich denke, ich kann ein paar nützliche Informationen hinzufügen.

In allen oben beschriebenen Methoden wird folgende Vorgehensweise vorgeschlagen:

  • starten Sie ein Terminal
  • zeigen Sie die Umgebungsvariablen mit env oder printenv oder was auch immer an

Das Problem dieser Lösungen ist, dass Sie die Umgebungsvariablen sehen der Shell, die auf dem Terminal ausgeführt wird. Die Umgebungsvariablen, die einer Anwendung zur Verfügung stehen, werden beispielsweise nicht direkt von der grafischen Oberfläche ausgeführt.

Dies fällt auf, wenn Sie zum Beispiel Ihren ~/.profile oder .bashrc oder .zshenv (abhängig von Ihrer Shell) verwenden, um die Umgebungsvariablen zu ändern - wie das klassische Hinzufügen von Verzeichnissen zum Weg.

Um zu sehen, welche Umgebungsvariablen für die Anwendung verfügbar sind, die direkt in der grafischen Umgebung gestartet wurde, können Sie Folgendes tun (in der Gnome-Shell gibt es sicher eine entsprechende Methode in allen anderen DEs):

  • drücke Alt-F2
  • führe den Befehl xterm -e bash --noprofile --norc aus

(Oder, wenn Sie nicht xterm, gnome-terminal -- bash --noprofile --norc haben - danke an @Mike Nakis für den Kommentar).

Sie haben jetzt ein Terminal mit einer Shell, die keine Umgebungsvariablen hinzugefügt hat. Sie können env hier verwenden, um alle Umgebungsvariablen aufzulisten:

Example of the bare Shell

Offensichtlich werden in der neuen Shell die Umgebungsvariablen von den Systemdateien hinzugefügt, aber diese Variablen sollten ohnehin (durch Vererbung) für alle Programme im System verfügbar sein.

Ich poste dies, weil es das vierte Mal ist, dass ich diesen Trick erneut durchsuchen muss und meine .pam_environment -Datei überprüfe. So, jetzt werde ich es schneller finden (und dabei hoffe ich, jemand anderem zu helfen ...)

51
Rmano

Sie können alle Variablen mit dem eingebauten declare sehen.

declare -p

Wenn Sie nur an Umgebungsvariablen interessiert sind, verwenden Sie

declare -xp

Führen Sie help declare aus, um die anderen Optionen anzuzeigen.

43
geirha

Um die Umgebungsvariablen im Terminal mit aufzulisten CTRL+ALT+T Sie können den Befehl env verwenden.

beispielsweise :

[[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

usw.

ich hoffe, das hilft.

11
rɑːdʒɑ

In der Bash mit compgen:

compgen -v | while read line; do echo $line=${!line};done  
6
tmgoblin

env ist ein POSIX 7 way :

export asdf=qwer
env | grep asdf

Beispielausgabe:

asdf=qwer

Es werden nur exportierte Variablen angezeigt: Nicht exportierte Variablen werden normalerweise nicht als "Umgebungsvariablen" betrachtet.

Ziehen Sie das printenv vor, das nicht POSIX ist. Beide scheinen dasselbe ohne Argumente zu tun: https: //unix.stackexchange.com/questions/123473/was-ist-der- Unterschied-zwischen-env- und-printenv

Die meisten Lösungen hier geben entweder nur Umgebungsvariablen aus oder haben den Nachteil, dass env oder (set -o posix; posix) keine Werte in syntaktischer Form ausgeben (versuchen Sie, die Variable A = $ 'a\r\nb' zu drucken ...). .

Hier ist eine Funktion, die alle Variablen, eine Variable pro Zeile, in der mit POSIX-Escapezeichen versehenen Form ausgibt:

function dump_vars {
    local VARNAME
    compgen -v | while read -r VARNAME; do
        printf "$VARNAME=%q\n" "${!VARNAME}"
    done
}

Vielen Dank an @tmgoblin für den Hinweis auf die Verwendung von compgen -v.

3
Ján Lalinský

Wenn Sie eine bestimmte Umgebungsvariable wünschen, anstatt sie alle mit printenv zu drucken, können Sie sie zum Beispiel mit echo "$PWD" drucken.

2
inigo333

printenv listet nur exportierte Variablen auf, command+alt+$ ("\ e $": complete-variable) listet alle Variablen auf.

0
user1133275