it-swarm.com.de

Was machen die Bash-Builtins 'Set' und 'Export'?

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 zum Setzen von Umgebungsvariablen gedacht, aber das kann nur mit VARIABLE=VALUE, Recht?

Auch wenn Sie set und export alleine eingeben, werden unterschiedliche Werte angezeigt.

Was ist ihr Zweck?

50
mydoghasworms

export exportiert in untergeordnete Elemente des aktuellen Prozesses, standardmäßig werden sie nicht exportiert. Zum Beispiel:

$ foo=bar
$ echo "$foo"
bar
$ bash -c 'echo "$foo"'

$ export foo
$ bash -c 'echo "$foo"'
bar

set hingegen legt Shell-Attribute fest, z. B. die Positionsparameter.

$ set foo=baz
$ echo "$1"
foo=baz

Beachten Sie, dass baz nicht foo zugewiesen ist, sondern einfach zu einem wörtlichen Positionsparameter wird. Es gibt viele andere Dinge, die set tun kann (meistens Shell-Optionen), siehe help set.

Beim Drucken druckt export, das ohne Argumente aufgerufen wird, alle Variablen in der Shell-Umgebung. set druckt auch Variablen, die nicht exportiert werden. Es kann auch einige andere Objekte exportieren (obwohl Sie beachten sollten, dass dies nicht portierbar ist), siehe help export.

54
Chris Down

Sehen help set: set wird verwendet, um Shell-Attribute und Positionsattribute festzulegen.

Variablen, die nicht exportiert werden, werden nicht von untergeordneten Prozessen geerbt. export wird verwendet, um eine Variable für den Export zu markieren.

6
choroba