Ich habe es in meiner .bashrc
bemerkt dass einige Zeilen export
haben davor, wie zum Beispiel
export HISTTIMEFORMAT="%b-%d %H:%M "
...
export MYSQL_HISTFILE="/root/.mysql_history"
während andere dies nicht tun, wie zum Beispiel
HISTSIZE=100000
Ich frage mich, ob dies erstens richtig ist und zweitens, was die Regel für die Verwendung von export
ist in .bashrc
.
Akzeptierte Antwort:
Sie brauchen nur export
für Variablen, die von anderen Programmen, die Sie in der Shell starten, „gesehen“ werden sollen, während diejenigen, die nur innerhalb der Shell selbst verwendet werden, nicht export
werden müssen Aufl.
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
Erklärung:
- Ich habe zuerst
${MYVAR}
festgelegt eine Shell-Variable mitMYVAR="value"
sein . Verwenden vonecho
Ich kann den Wert davon echoen, weil echo Teil der Shell ist. - Dann erstelle ich
echo.sh
. Das ist ein kleines Skript, das im Grunde dasselbe macht, es gibt nur${MYVAR}
zurück , aber der Unterschied besteht darin, dass es in einem anderen Prozess ausgeführt wird, da es sich um ein separates Skript handelt. - Beim Aufrufen von
echo.sh
er gibt nichts aus, da der neue Prozess${MYVAR}
nicht erbt - Dann exportiere ich
${MYVAR}
in meine Umgebung mit demexport
Schlüsselwort - Wenn ich jetzt die gleiche
echo.sh
starte wieder gibt es den Inhalt von${MYVAR}
wieder weil es aus der Umwelt kommt
Um Ihre Frage zu beantworten:
Es hängt davon ab, wo eine Variable verwendet werden soll, ob Sie sie exportieren müssen oder nicht.
Verwandte:Wie exportiere ich die Google-Chat-Protokolle??