Копія з середовища поширюється на суб-оболонки, так це працює:
$ export MY_VAR=200
$ bash
$ echo $MY_VAR
200
але оскільки це копія, ви не можете отримати це значення до батьківської оболонки - принаймні, не змінюючи оточення.
Це здається, що ви насправді хочете піти на крок далі, а саме - зробити щось, що діє як глобальна змінна, поділяється "обробляючими" оболонками, ініційованими окремо від батьківського, як ваша нова вкладка в терміналі Gnome.
Здебільшого, відповідь "ви не можете, тому що змінні середовища не працюють таким чином". Однак є ще одна відповідь, яка полягає в тому, що ви завжди можете щось зламати. Одним із підходів було б записати значення змінної у файл, як-от ~/.myvar
, а потім включити це в ~/.bashrc
. Потім кожна нова оболонка розпочнеться зі значення, прочитаного з цього файлу.
Ви можете піти на крок далі - введіть ~/.myvar
формат MYVAR=200
, а потім встановіть PROMPT_COMMAND=source ~/.myvar
, що призведе до того, що значення буде перечитуватися кожного разу, коли ви отримуєте нове підказку. Це все ще не зовсім спільна глобальна змінна, але вона починає діяти так. Він не активується, поки не повернеться підказка, що залежно від того, що ви намагаєтесь зробити, може бути серйозним обмеженням.
І тоді, звичайно, наступне - це автоматично записати зміни в ~/.myvar
. Це стає дещо складнішим, і я зупинюсь на цьому, тому що дійсно змінні середовища не повинні були бути механізмом зв'язку між оболонками, а краще просто знайти інший спосіб зробити це.