Sie benötigen nur export
Variablen, die von anderen Programmen "gesehen" werden sollen, die Sie in der Shell starten, während diejenigen, die nur in der Shell selbst verwendet werden, nicht bearbeitet werden müssen export
.
Dies ist, was die Manpage sagt:
The supplied names are marked for automatic export to the environ‐
ment of subsequently executed commands. If the -f option is given,
the names refer to functions. If no names are given, or if the -p
option is supplied, a list of all names that are exported in this
shell is printed. The -n option causes the export property to be
removed from each name. If a variable name is followed by =word,
the value of the variable is set to word. export returns an exit
status of 0 unless an invalid option is encountered, one of the
names is not a valid shell variable name, or -f is supplied with a
name that is not a function.
Dies kann mit folgendem demonstriert werden:
$ MYVAR="value"
$ echo ${MYVAR}
value
$ echo 'echo ${MYVAR}' > echo.sh
$ chmod +x echo.sh
$ ./echo.sh
$ export MYVAR="value-exported"
$ ./echo.sh
value-exported
Erläuterung:
- Ich habe zuerst festgelegt
${MYVAR}
, dass eine Shell-Variable mit MYVAR="value"
. Mit echo
I kann ich den Wert davon wiedergeben, da Echo Teil der Shell ist.
- Dann erstelle ich
echo.sh
. Das ist ein kleines Skript, das im Grunde das Gleiche tut, es ist nur ein Echo ${MYVAR}
, aber der Unterschied ist, dass es in einem anderen Prozess ausgeführt wird, weil es ein separates Skript ist.
- Beim Aufruf
echo.sh
gibt es nichts aus, da der neue Prozess nicht erbt${MYVAR}
- Dann exportiere
${MYVAR}
ich mit dem export
Schlüsselwort in meine Umgebung
- Wenn ich jetzt dasselbe
echo.sh
erneut ausführe , wird der Inhalt von wiedergegeben, ${MYVAR}
weil er aus der Umgebung stammt
So beantworten Sie Ihre Frage:
Es hängt davon ab, wo eine Variable verwendet wird, ob Sie sie exportieren müssen oder nicht.