
Ich lerne gerade die Grundlagen, einschließlich der Deklaration und des Umgangs mit Variablen. Gibt es eine einfache Möglichkeit, eine Liste aller von mir benannten Variablen anzuzeigen? (Alles, was ich bei der Suche gefunden habe, spricht nur von Umgebungsvariablen, was vielleicht das ist, wonach ich suche, aber wahrscheinlich nicht?)
Antwort1
Beim Ausführen declare
erhalten Sie eine Liste aller Umgebungsvariablenin der aktuellen Shell, einschließlich derer, die Sie selbst definiert haben. Es werden auch alle Funktionen eingeschlossen, es sei denn, Sie verwenden die -p
Option, die sie überspringt, aber zusätzliches Rauschen hinzufügt.
Antwort2
Es gibt zwei verschiedene Arten von Variablen (eigentlich mehr, aber in diesem Kontext nur zwei): privat und exportiert.
Private Variablen sind Variablen, die in der Shell (oder im Skript) verwendet werden können, aber nicht von Programmen, die von der Shell (oder im Skript) gestartet werden.
Sie können eine Liste aller Variablen, einschließlich der exportierten, erhalten, indem Siedeclare
,typeset
, oder verwendenset
. In Bash machen alle 3 dasselbe.Exportierte Variablen können sowohl von der Shell als auch von den von ihr gestarteten Programmen verwendet werden.
Sie können eine Liste der exportierten Variablen abrufen, indem Sie verwendenenv
.
Bei der Ausführung von Aufgaben wie diesen ist Folgendes zu beachten:
FOO="bar"
echo "$FOO"
$FOO
ist eine private/nicht exportierte Variable. Die Shell erweitert sie eigentlich $FOO
zu bar
, bevor sie sie an übergibt echo
. echo
Sie wird also eigentlich als aufgerufen echo "bar"
.
Sie können Variablen exportieren, indem Sie export FOO
, oder ausführen export FOO="bar"
.
Darüber hinaus können Sie eine Variable für nur einen einzigen Aufruf eines Programms exportieren, indem Sie die Variable am Anfang des Befehls hinzufügen. Beispiel:
FOO="bar" cmd1
cmd2
cmd1
Zugriff darauf haben wird, $FOO
aber cmd2
nicht.