Wie liste ich alle Variablennamen und ihre aktuellen Werte auf?


Zur akzeptierten Antwort gehen


Wie liste ich alle Variablennamen und ihre aktuellen Werte auf?

Und zwar nicht nur $HOME , $PWD usw. , aber andere haben Sie definiert.


357





2013-03-30




Anzahl der Antworten: 9


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 printenv Manpage .


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 auf der zshoptions Manpage .


490


2013-03-30

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 besteht darin, dass Sie die Umgebungsvariablen der Shell sehen, 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 macht sich beispielsweise bemerkbar, wenn Sie die Umgebungsvariablen mit ~/.profile oder .bashrc oder .zshenv (abhängig von Ihrer Shell) ändern - wie beim klassischen Hinzufügen von Verzeichnissen zum Pfad.

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ühren Sie den Befehl aus xterm -e bash --noprofile --norc

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

Sie haben jetzt ein Terminal mit einer Shell, die keine Umgebungsvariablen hinzugefügt hat. Hier können Sie env alle Umgebungsvariablen auflisten:


Beispiel für die Rohkarosserie

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 ich diesen Trick zum vierten Mal erneut durchsuchen und meine .pam_environment Datei überprüfen muss . So, jetzt werde ich es schneller finden (und dabei hoffe ich, jemand anderem zu helfen ...)


53


2013-10-12

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

 declare -p
 

Wenn Sie nur an Umgebungsvariablen interessiert sind, verwenden Sie

 declare -xp
 

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


47


2013-04-04

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

zum Beispiel :

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

etc.

Ich hoffe, das hilft.


12


2013-03-30

In der Bash mit compgen:

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

8


2014-04-11

env ist ein POSIX 7 Weg :

 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 vor printenv , was nicht POSIX ist. Beide scheinen dasselbe ohne Argumente zu tun: https://unix.stackexchange.com/questions/123473/was-ist-der- Unterschied-zwischen-env-und-printenv


3



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


2018-12-15

Wenn Sie eine bestimmte Umgebungsvariable möchten, anstatt sie alle mit zu printenv drucken, können Sie sie beispielsweise folgendermaßen drucken echo "$PWD"


2


2018-01-08

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


0


2019-03-01