Ini adalah kutipan dari halaman manual Bash:
ekspor [-fn] [nama[=kata]] ...
ekspor -p
Nama yang disediakan ditandai untuk ekspor otomatis ke lingkungan perintah yang dijalankan selanjutnya. Jika opsi -f diberikan, nama mengacu pada fungsi...
Jika Anda hanya membutuhkan variabel di lingkungan saat ini, Anda tidak perlu menggunakan ekspor.
var=value
Edit:
Tanpa ekspor:hanya lingkungan saat ini. Dengan ekspor:lingkungan saat ini dan lingkungan anak.
Berikut demonstrasi pengaruh ekspor terhadap ketersediaan variabel di lingkungan anak dan bahwa perubahan di lingkungan anak tidak memengaruhi lingkungan induk:
$ var1=123
$ export var2=456
$ echo "parent [$var1] [$var2] [$var3]"
parent [123] [456] []
$ var3=789 bash -c 'echo "child [$var1] [$var2] [$var3]"; var1=111; var2=222; var3=333; echo "child [$var1] [$var2] [$var3]"'
child [] [456] [789]
child [111] [222] [333]
$ echo "parent [$var1] [$var2] [$var3]"
parent [123] [456] []
Setelah gema pertama (echo "parent..."
) Anda melihat "123" dan "456" karena keduanya var1
dan var2
aktif di lingkungan saat ini. Anda tidak melihat nilai untuk var3
karena belum disetel.
Setelah baris yang dimulai "var3=...
" Anda tidak melihat nilai untuk var1
karena tidak diekspor. Anda lakukan lihat nilai untuk var2
karena itu dulu diekspor. Anda melihat nilai untuk var3
karena disetel hanya untuk lingkungan anak .
(bash -c
setara dengan menjalankan skrip dengan isi argumen ke -c
pilihan. Skrip atau yang dapat dieksekusi lainnya atau, dalam hal ini, argumen untuk bash -c
menjadi anak dari lingkungan saat ini yang, sebagai hasilnya, tentu saja, adalah orang tua dari anak tersebut.)
Dalam "skrip" nilai variabel diubah. Sekarang menampilkan nilai-nilai baru tersebut.
Setelah "skrip" selesai, eksekusi kembali ke lingkungan induk (baris perintah dalam kasus ini). Setelah gema terakhir, Anda akan melihat nilai asli karena perubahan yang dibuat di lingkungan anak tidak memengaruhi induk.
Anda mengatakan itu
Saya selalu menggunakan perintah ekspor untuk mengatur variabel lingkungan
Ngomong-ngomong, Anda mengatakannya, sepertinya Anda benar-benar mencoba bertanya bagaimana Anda membuat variabel lingkungan tetap ada. Untuk melakukannya, Anda harus meletakkan export VAR="foo"
Anda pernyataan dalam file $HOME/.bash_profile Anda (jika Anda menggunakan bash). Jika Anda ingin variabel lingkungan tersebut bertahan untuk semua pengguna kecuali root, tambahkan ke /etc/profile. Jika Anda ingin menambahkannya untuk pengguna root juga, atur di /root/.bash_profile .
Ini akan berfungsi untuk semua shell login di mana bash adalah shell pilihan. Untuk shell non-login, Anda perlu menggunakan .bashrc. Saya tidak memiliki wawasan untuk ditawarkan untuk cangkang lain :D