Kemungkinan Duplikat:
Perbedaan antara "a = b" dan "ekspor a = b" di bash
Sulit untuk mengakui, tetapi saya tidak pernah benar-benar mengerti apa yang sebenarnya export
dilakukan pada variabel lingkungan. Saya tahu bahwa jika saya tidak mengekspor variabel saya kadang-kadang tidak bisa melihatnya dalam proses anak, tetapi kadang-kadang sepertinya saya bisa. Apa yang sebenarnya terjadi ketika saya katakan
export foo=5
dan kapan saya tidak harus mengekspor variabel?
bash
export
shell-script
Chas. Owens
sumber
sumber
export
pernyataan ke .bashrc / .bash_profile untuk membuat variabel global persisten mirip dengan$HOME
.Jawaban:
Dari
man bash
:sumber
Variabel yang diekspor diteruskan ke proses anak, variabel yang tidak diekspor tidak.
sumber
PYTHONPATH
) dan kemudian mencatat bahwa meskipun Anda bisa,echo $PYTHONPATH
itu tidak akan dikenali oleh skrip python atau bash sampai Andaexport
melakukannya$BASHPID
) dan Anda dapat membaca variabel yang tidak diekspor dari shell induk. Bukti sederhana:x="y"; echo "$BASHPID: $x"; (echo "$BASHPID: $x")
Dugaan saya adalah bahwa ini adalah kasus khusus yang terjadi ketika proses anak adalah sub-shell.Ketika Anda menggunakan
export
, Anda menambahkan variabel ke daftar variabel lingkungan shell di mana perintah ekspor dipanggil dan semua variabel lingkungan shell dilewatkan ke proses anak, itulah sebabnya Anda dapat menggunakannya.Ketika Anda menyelesaikan shell, lingkungannya dihancurkan, itulah sebabnya variabel lingkungan dideklarasikan dan diekspor saat login, dalam file .bashrc misalnya
sumber