GNU/Linux >> LINUX-Kenntnisse >  >> Linux

Export in .bashrc verwenden?

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 mit MYVAR="value" sein . Verwenden von echo 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 dem export 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??
Linux
  1. Verwendung von UFW als IP-Blacklist

  2. Git-Autovervollständigung?

  3. Grundlegende Division mit Variable und Ganzzahl?

  4. Linux-Exportbefehl

  5. Senden von HTML-Mails mit einem Shell-Skript

Bash-Exportvariable

Verwenden von Runit auf Devuan

Exportbefehl unter Linux

Iterieren Sie mithilfe des Shell-Skripts über die $PATH-Variable

Wiederherstellen von ~/.bashrc ohne Verwendung von Bash-Befehlen

Installieren und Verwenden von XeTeX