Jika saya menjalankan
export TEST=foo
echo $TEST
Ini menghasilkan foo.
Jika saya menjalankan
TEST=foo echo $TEST
Itu tidak. Bagaimana saya bisa mendapatkan fungsi ini tanpa menggunakan ekspor atau skrip?
Jawaban yang Diterima:
Ini karena shell memperluas variabel di baris perintah sebelum itu benar-benar menjalankan perintah dan pada saat itu variabel tidak ada. Jika Anda menggunakan
TEST=foo; echo $TEST
itu akan berhasil.
export
akan membuat variabel muncul di lingkungan perintah yang dijalankan selanjutnya (untuk mengetahui cara kerjanya di bash, lihat help export
). Jika Anda hanya membutuhkan variabel untuk muncul di lingkungan satu perintah, gunakan apa yang telah Anda coba, yaitu:
TEST=foo your-application
Sintaks shell menggambarkan ini sebagai secara fungsional setara dengan:
export TEST=foo
your-application
unset TEST
Lihat spesifikasi untuk detailnya.
Bagian yang menarik adalah, bahwa export
perintah mengganti bendera ekspor untuk variabel nama . Jadi jika Anda melakukannya:
unset TEST
export TEST
TEST="foo"
TEST
akan diekspor meskipun tidak ditentukan pada saat diekspor. Namun selanjutnya unset
harus menghapus atribut ekspor darinya.