GNU/Linux >> Linux Esercitazione >  >> Linux

Utilizzo di Esporta in .bashrc?

Ho notato nel mio .bashrc che alcune righe hanno export davanti a loro, come

export HISTTIMEFORMAT="%b-%d  %H:%M  "
...
export MYSQL_HISTFILE="/root/.mysql_history"

mentre altri no, come

HISTSIZE=100000

Mi chiedo se, in primo luogo, questo è corretto e in secondo luogo qual è la regola per l'utilizzo di export in .bashrc .

Risposta accettata:

Hai solo bisogno di export per le variabili che dovrebbero essere "viste" da altri programmi che avvii nella shell, mentre quelle che vengono utilizzate solo all'interno della shell stessa non devono essere export ed.

Questo è ciò che dice la pagina man:

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.

Questo può essere dimostrato con quanto segue:

$ MYVAR="value"
$ echo ${MYVAR}
value
$ echo 'echo ${MYVAR}' > echo.sh
$ chmod +x echo.sh
$ ./echo.sh

$ export MYVAR="value-exported"
$ ./echo.sh
value-exported

Spiegazione:

  • Ho prima impostato ${MYVAR} essere una variabile Shell con MYVAR="value" . Usando echo Posso fare eco al suo valore perché l'eco fa parte della shell.
  • Poi creo echo.sh . Questo è un piccolo script che sostanzialmente fa lo stesso, fa solo eco a ${MYVAR} , ma la differenza è che verrà eseguito in un processo diverso perché è uno script separato.
  • Quando si chiama echo.sh non restituisce nulla, perché il nuovo processo non eredita ${MYVAR}
  • Quindi esporto ${MYVAR} nel mio ambiente con export parola chiave
  • Quando ora eseguo lo stesso echo.sh di nuovo, fa eco al contenuto di ${MYVAR} perché lo ottiene dall'ambiente

Quindi, per rispondere alla tua domanda:

Dipende da dove verrà utilizzata una variabile, se devi esportarla o meno.

Correlati:come esportare i registri della chat di Google??
Linux
  1. Utilizzo di UFW come lista nera IP

  2. Errori di intercettazione nella sostituzione dei comandi utilizzando "-o Errtrace" (ad es. Set -e)?

  3. Utilizzo delle istruzioni Case in Bash

  4. Comando di esportazione Linux

  5. Come scrivo caratteri non ASCII usando echo?

Variabile di esportazione Bash

Utilizzo di Runit su Devuan

Cosa fa Eco $? Fare??

Divisione di base usando variabile e intero?

Esporta comando in Linux

Connessione al WiFi tramite adb shell