Ich bin ein bisschen ratlos in Bezug auf den Zweck von set
und export
in Bash (und ich denke, wahrscheinlich auch andere Shells).
Ich würde denken, es ist für das Setzen von Umgebungsvariablen, aber das kann einfach mit gemacht werden VARIABLE=VALUE
, oder?
Auch beim Tippen set
und export
für sich alleine zeigen sich unterschiedliche Werte.
Also, was ist ihr Zweck?
Antworten:
export
Exporte an untergeordnete Elemente des aktuellen Prozesses. Standardmäßig werden sie nicht exportiert. Zum Beispiel:set
Setzt dagegen Shell-Attribute, beispielsweise die Positionsparameter.Beachten Sie, dass dies
baz
nicht zugewiesen istfoo
, sondern lediglich ein wörtlicher Positionsparameter wird. Es gibt viele andere Dinge, dieset
man tun kann (meistens Shell-Optionen), siehehelp set
.Beim Drucken
export
ohne Argumente werden alle Variablen in der Shell-Umgebung gedruckt .set
druckt auch Variablen, die nicht exportiert werden. Es kann auch einige andere Objekte exportieren (obwohl Sie beachten sollten, dass dies nicht portierbar ist), siehehelp export
.quelle
foo=bar command
. Dies ist ein impliziter Export für einen einzelnen Befehl. Die zweite Möglichkeit besteht darin, dasshttp_proxy
bereits in Ihre Umgebung exportiert wird, bevor Sie sie ändern.See
help set
: set wird verwendet, um Shell-Attribute und Positionsattribute festzulegen.Variablen, die nicht exportiert werden, werden nicht an untergeordnete Prozesse vererbt.
export
wird verwendet, um eine Variable für den Export zu markieren.quelle