Ist es möglich, eine Variable aus einem übergeordneten Element zu exportierenShell-Skript für seine Kinder? Beim Ausführen der beiden folgenden Skripts wird immer 0 zurückgegeben. Ich möchte jedoch, dass 3 zurückgegeben wird. Ich habe auch versucht, den Variablenfehler zu exportieren, festzulegen und den .bash_profile ohne Erfolg hinzuzufügen.
test.sh
$ cat test.sh
#!/bin/bash
error=0
./envtest.sh
echo $error
envtest.sh
$ cat envtest.sh
#!/bin/bash
source ./test.sh
test=3
error=$test
echo $error
Antworten:
0 für die Antwort № 1Wie @chepner kommentiert, nein.
Wenn Sie aufrufen ./envtest.sh
von innen test.sh
wird ein neuer Prozess erstellt, der ausgeführt werden soll /bin/bash ./envtest.sh
und die Umgebung dieses Prozesses wird mit a initialisiert Kopieren von jeder Umgebungsvariablen aus dem übergeordneten Prozess. Egal was du drinnen machst envtest.sh
kann nur die Variablen in seiner eigenen Umgebung beeinflussen; Es kann die Variablen in der Umgebung der Eltern nicht berühren.