Benutzer-Werkzeuge

Webseiten-Werkzeuge


set_export_env
  • set, export, env setzen Umgebungsvariablen
    • set und env können diese auch anzeigen
    • set ist ein eingebautes Werkzeug der Shell und zeigt alle Shell-Variablen an
      • mehr als env, was nur die Umgebungsvariablen anzeigt
Befehl Auswirkung auf
setÄndert nur unmittelbar Variablen für die aktuelle Shell. Die Änderungen werden in keine Subshells oder von der Shell gestarteten Programme übernommen.
exportSetzt Variablen für die aktuelle Shell und alle Untershells und Programme die durch diese Shell gestartet werden
envStartet einen Prozess und setzt bestimmte Umgebungsvariablen. Die Umgebungsvariablen der Shell von der ggf. gestartet wirdt ändern sich dabei nicht

Beispiel:

set eins=1
echo $eins

  • „echo $eins“ gibt nichts zurück

<shx bash> export mytest=„hallo“ echo $mytest hallo /bin/bash echo $mytest hallo </sxh>

  • „echo $mytest“ gibt den Wert zurück
  • „echo $mytest“ in einer Subshell gibt ebenfalls den Wert zurück, da diese die Umgebungsvariablen erbt

/usr/bin/env blafasel="hallo" /usr/bin/zsh -c 'echo $blafasel'
hallo
set | grep blafasel                                           

  • der echo-Befehl in der Sub-Shell gibt den Inhalt der Variable „blafasel“ aus
  • der Befehl set (in der Ursprungsshell) kennt die Variable nicht und gibt daher nur einen leeren String zurück

env

  • ist ein eigenständiges Programm (nicht Teil einer Shell)
  • führt ein Programm, ggf. mit bestimmten (zusätzlichen) Umgebungsvariablen aus
  • kann auch genutzt werden um Befehle auszuführen die in $PATH enthalten sind, deren Ort man aber nicht kennt
    • das ist relevant wenn man Shebangs nutzt
  • Achtung: Wenn man einen Befehl per env ausführt und dieser Shellvariablen benutzt sollte man diesen in einfache Anführungszeichen „'“ setzen, weil ansonsten werden die Variablen bereits durch Ursprungsshell durch ihre Werte ersetzt

Mit einfachen Anführungszeichen („richtig“):

blafasel="wiedersehen"
/usr/bin/env blafasel="hallo" /usr/bin/zsh -c 'echo $blafasel'
hallo

Mit doppelten Anführungszeichen („falsch“):

blafasel="wiedersehen"
/usr/bin/env blafasel="hallo" /usr/bin/zsh -c "echo $blafasel"
wiedersehen

  • in letzterem Beispiel wird vor dem Aufruf von env die Variable „blafasel“ bereits durch ihren Wert ersetzt durch die ursprüngliche Shell
set_export_env.txt · Zuletzt geändert: 2023/07/24 18:52 von root