dedlfix: bash - Globale Umgebungsvariable im Script ändern

Beitrag lesen

Tach!

Hallo,

Aber wie rettet mich das vor Scripts, in deren shebang-Zeile ein ganz anderes Verzeichnis für das erforderliche Programm steht, als es in meiner eigenen Installation der Fall ist?
Dann ist es schon zu spät. Wenn die Shebang gleich auf #!/usr/bin/env php steht, dann wird PHP gestartet, ohne dass das Script genau wissen muss, wo die "php.exe" liegt.

ja, gut. Das ist eber nicht der typische Fall. Typisch ist eher, dass in der shebang-Zeile "hart" auf einen der üblichen Installationspfade verwiesen wird. Also FAIL.

Das würde ich jetzt nicht so statistisch sicher behaupten wollen. Meiner unmaßgeblichen Beobachtung nach wird env immer bekannter und ist häufiger anzutreffen.

Ich betrachte im Moment *ausschließlich* Shellscripte (aka Batchdateien), weil der Aufruf eines weiteren Programms als Kindprozess *immer* ein neues Environment bekommt. Es geht also nur darum, dass eine Batchdatei bevorzugt im Kontext (d.h. Environment) der aktiven Shell ausgeführt wird und auch deren Environment manipulieren darf und soll.

Also ich habe sehr selten Bedarf, ein Script mit source beziehungsweise . starten zu müssen, um es in der aktuellen Shell zu halten. Die meisten Shellscripts kommen sehr gut in abgeschirmten Umgebungen zurecht, und sind sogar auch darauf ausgelegt. Sie haben ja keine andere Chance, variable Werte anderswo als in Umgebungsvariablen abzulegen[*]. Es ist wesentlich wichtiger, dass man nicht ständig im Script prüfen muss, ob Variablen übergeordneter Prozesse beeinträchtigen werden und auf das Aufräumen achten muss.

[*] also nicht dass ich wüsste. (Dateien mal außen vor gelassen.)

dedlfix.