Variabel yang diekspor dibawa ke lingkungan perintah yang dijalankan oleh shell yang mengekspornya, sementara variabel yang tidak diekspor adalah lokal untuk permintaan shell saat ini. Dari export
halaman manual:
Shell harus memberikan atribut ekspor ke variabel yang sesuai dengan nama yang ditentukan, yang akan menyebabkan mereka berada di lingkungan perintah yang dieksekusi selanjutnya.
set
menampilkan lingkungan saat ini, yang mencakup variabel lokal yang tidak diekspor. env
digunakan untuk meluncurkan program di lingkungan baru, dan tanpa argumen akan menghasilkan seperti apa lingkungan baru itu. Karena env
menciptakan lingkungan baru, hanya variabel yang diekspor yang dimasukkan, seperti halnya untuk setiap program yang diluncurkan dari shell itu. Misalnya, memunculkan shell kedua di dalam shell pertama (saya dulu $$
mewakili prompt di shell bagian dalam):
$ FOO=BAR
$ bash
$$ echo $FOO # Note the empty line
$$ exit
$ export FOO
$ bash
$$ echo $FOO
BAR
$$
Perhatikan bahwa itu adalah variabel yang diekspor, bukan hanya nilainya. Ini berarti bahwa sekali Anda export FOO
, FOO
menjadi variabel global dan muncul di lingkungan berikutnya, bahkan jika diubah kemudian:
$ export FOO
$ FOO=BAR
$ bash
$$ echo $FOO
BAR
$$