Una copia dell'ambiente si propaga alle sotto shell, quindi funziona:
$ export MY_VAR=200
$ bash
$ echo $MY_VAR
200
ma dal momento che è una copia, non puoi ottenere quel valore fino alla shell genitore, non cambiando l'ambiente, almeno.
Sembra che tu voglia davvero fare un passo avanti, ovvero creare qualcosa che si comporta come una variabile globale, condivisa da shell "fratelli" avviate separatamente dal genitore - come la tua nuova scheda in Gnome Terminal.
Principalmente, la risposta è "impossibile, perché le variabili di ambiente non funzionano in questo modo". Tuttavia, c'è un'altra risposta, che è, beh, puoi sempre hackerare qualcosa. Un approccio sarebbe quello di scrivere il valore della variabile in un file, come ~/.myvar
, e quindi includerlo in ~/.bashrc
. Quindi, ogni nuova shell inizierà con il valore letto da quel file.
È possibile fare un ulteriore passo avanti: ~/.myvar
essere nel formato MYVAR=200
e quindi impostare PROMPT_COMMAND=source ~/.myvar
, il che farebbe rileggere il valore ogni volta che si riceve un nuovo prompt. Non è ancora del tutto una variabile globale condivisa, ma sta cominciando ad agire come esso. Non si attiverà fino a quando non verrà visualizzato un prompt, che a seconda di ciò che si sta tentando di fare potrebbe essere una grave limitazione.
E poi, ovviamente, la prossima cosa è scrivere automaticamente le modifiche ~/.myvar
. Questo diventa un po 'più complicato, e mi fermerò a questo punto, perché in realtà le variabili di ambiente non erano pensate per essere un meccanismo di comunicazione tra shell, ed è meglio trovare solo un altro modo per farlo.