Ich bin es gewohnt, dass der Bash- set
Befehl nur eine Liste der Umgebungseinstellungen auflistet, z. B. PATH und dergleichen.
Auf einem Ubuntu-System, das ich gerade eingerichtet habe, werden bei der Ausführung jedoch set
2000 Textzeilen ausgegeben, darunter viele Funktionen wie diese:
dequote ()
{
eval printf %s "$1" 2> /dev/null
}
Wie drucke ich nur die Umgebungsvariablen?
Antwort1
Standardmäßig set
wird dasShell-Variablen, nicht nur die Umgebungsvariablen. In bash
Funktionen werden Teilvariablen betrachtet. Siehehttps://askubuntu.com/questions/26318/environment-variable-vs-shell-variable-whats-the-difference.
Wenn Sie env
oder verwenden, printenv
wird dasUmfeldin Kindprozesse exportiert, was nichtNotwendigdas gleiche wie Ihre bash
Umgebung:
$ foo=1
$ printenv foo
$ export foo
$ printenv foo
1
Die Bash declare
und typeset
Built-Ins können alle Variablentypen auflisten, um Funktionen wegzulassen:
declare -F
Die Ausgabe davon ist in einem Format, das für die Wiederherstellung des Status in einem Shell-Skript geeignet ist, daher ist sie etwas ausführlich, obwohl Sie zwischen Arrays, Integern und anderen Typen unterscheiden können (je nach Version). Siehe auch die Ausgabe von export -p
.
Und vonhttps://stackoverflow.com/questions/1305237/wie-man-im-script-in-bash-Variablen-auflistet
Sie können Bash anweisen, den POSIX-Modus zu verwenden und set
sich „richtig“ zu verhalten:
( set -o posix ; set )
Dies wird in einer Subshell ausgeführt, sodass Ihre laufende Shell nicht geändert wird, und es nimmt Variablen korrekt auf, die noch nicht in die geerbte Umgebung exportiert wurden.
Antwort2
Wenn Sie alle Umgebungsvariablen auflisten möchten, geben Sie einfach ein env
.