Wie kann ich in zsh alle Umgebungsvariablen auflisten?

26

Ich möchte eine Liste aller Umgebungsvariablen (Shell-Variablen? Exportierte Variablen?) Und ihrer Werte zu einem bestimmten Zeitpunkt in zsh erhalten.
Was ist der richtige Weg, um dies zu tun?

Ali
quelle

Antworten:

35

Es klingt wie Sie wollen env.

Chris Down
quelle
das war peinlich Vielen Dank. Aber jetzt wo wir dran sind, wenn ich niemanden hätte fragen können, wie hätte ich das finden können?
Ali
3
@Ali Nun, envist nicht spezifisch für zsh, es ist ein eigenständiges Programm. Das heißt, das erste Ergebnis bei Google für "Umgebungsvariablen auflisten" lautet "verwenden" env. Ich denke, das ist eine Möglichkeit ;-)
Chris Down
1
Ich meine, wenn ich keine Internetverbindung hätte! Ich weiß, dass ich in ein paar Tagen ohne Internetverbindung sterben würde, aber in diesen wenigen Tagen, wie kann ich das in der Dokumentation nachschlagen / man ...?
Ali
2
Sie könnten etwas tun wieapropos environment
Glenn Jackman
1
@Ali, wenn du das ohne Hilfe finden wolltest, hätte ich mit man zshoder Googeln nach "zsh print variables" oder ähnlichem angefangen.
Alex
21

exportdruckt die Liste der Umgebungsvariablen und ihrer Werte aus. Die Werte werden in Anführungszeichen gesetzt, die Ausgabe von exporteignet sich zum Zurücklesen in die Shell. Die Variablen werden in alphabetischer Reihenfolge gedruckt.

Wenn Sie auch Shell-Variablen möchten, verwenden Sie set. Wenn Sie Shell - Variablen mit Typenannotationen wollen ( exported, integerusw.), Verwendung typeset.

Sie können exportund auch setfür andere Shells verwenden, aber die meisten zitieren die Ausgabe nicht, sodass sie nicht syntaktisch analysiert werden kann. typesetist verfügbar (mit unterschiedlichem Verhalten) auf ksh und bash.

Wenn Sie die Umgebungsvariablen möchten, gibt es auch den envBefehl, der unsortiert und ohne Anführungszeichen druckt

Wenn Sie nur die Namen möchten, greifen Sie auf das parametersassoziative Array zu. Die Tasten sind die Parameternamen und die Werte geben die Typen an.

Gilles 'SO - hör auf böse zu sein'
quelle
2
echo $ZSH_VERSIONkehrt zurück 5.0.5, aber wenn ich es tue, env | grep ZSH_VERSIONsehe ich keine Übereinstimmungen. Ist ZSH_VERSIONkeine Umgebungsvariable? Was vermisse ich?
Josh
3
@Josh Es ist eine Shell-Variable, die nicht in die Umgebung exportiert wird.
Gilles 'SO - hör auf böse zu sein'
@ Gilles Wie würden wir all das auch auflisten?
Daniel Que
@DanielQue Zweiter Absatz meiner Antwort
Gilles 'SO - hör auf, böse zu sein'
@ Gilles Es ist seltsam, dass lokale Variablen wie " ZSH_HIGHLIGHT_STYLESNicht angezeigt , wenn ich sie benutze" setoder andere Befehle nicht angezeigt werden.
Daniel Que