Wie setze ich eine globale Umgebungsvariable in einem Bash-Skript?
Wenn ich solche Sachen mache
#!/bin/bash
FOO=bar
...oder
#!/bin/bash
export FOO=bar
... die vars scheinen im lokalen Kontext zu bleiben, während ich sie weiterhin verwenden möchte, nachdem das Skript ausgeführt wurde.
source
ist ein Alias für.
. Sie könnten alsosource myscript.sh
stattdessen laufen , wenn Sie expliziter sein möchten.Wenn Sie ein Shell-Skript ausführen , erfolgt dies in einer Sub-Shell, sodass die Umgebung der übergeordneten Shell nicht beeinträchtigt werden kann. Sie möchten das Skript wie folgt beschaffen:
Dies führt es im Kontext der aktuellen Shell aus, nicht als Sub- Shell.
Von der Bash-Manpage:
quelle
source myscript.sh
ist auch machbar.Beschreibung für den Linux-Befehl
source
:quelle
source
tut?man source
das Terminal ein und Sie erhalten, was Sie wollen.source
. Vielleicht ist das OP nicht.oder
Mann Export:
Die Shell gibt den Variablen, die den angegebenen Namen entsprechen, das Exportattribut, wodurch sie sich in der Umgebung von anschließend ausgeführten Befehlen befinden. Wenn auf den Namen einer Variablen = word folgt, wird der Wert dieser Variablen auf word gesetzt.
quelle
export FOO = /mydir/bar
quelle