Apa perbedaan antara:
a=b
dan
export a=b
Di bash?
Saya mengerti bahwa keduanya mendefinisikan variabel lingkungan, tetapi saya tidak sepenuhnya memahami perbedaannya.
Apa perbedaan antara:
a=b
dan
export a=b
Di bash?
Saya mengerti bahwa keduanya mendefinisikan variabel lingkungan, tetapi saya tidak sepenuhnya memahami perbedaannya.
Jawaban:
export
menyebarkan variabel ke subproses.
Misalnya, jika Anda melakukannya
FOO=bar
maka subproses yang memeriksa FOO tidak akan menemukan variabel sedangkan
export FOO=bar
akan memungkinkan subproses untuk menemukannya.
Tetapi jika FOO
telah sudah didefinisikan sebagai variabel lingkungan, maka FOO=bar
akan mengubah nilai dari variabel lingkungan.
Sebagai contoh:
FOO=one # Not an environment variable
export FOO # Now FOO is an environment variable
FOO=two # Update the environment variable, so sub processes will see $FOO = "two"
Kerang yang lebih tua tidak mendukung export FOO=bar
sintaksis; kamu harus menulis FOO=bar; export FOO
.
export
", Anda tidak mendefinisikan variabel lingkungan, tetapi hanya variabel shell. Variabel Shell hanya tersedia untuk proses shell; variabel lingkungan tersedia untuk setiap proses selanjutnya, bukan hanya shell. Selain itu, subkulit adalah perintah yang terdapat di dalam tanda kurung, yang memang memiliki akses ke variabel shell, sedangkan yang Anda bicarakan adalah proses anak yang merupakan shell.
Juga, jika Anda ingin agar variabel tersedia untuk shell panggilan tanpa menggunakan ekspor, Anda dapat melakukan ini:
File a.ksh adalah -
#!/bin/ksh
FOO=bar
Pada prompt, jalankan ini
> . a.ksh
Ini akan menjalankan perintah di dalam shell yang sama dan $ FOO akan tersedia.
Sedangkan,
> a.ksh
Akan membuat $ FOO hanya tersedia dalam a.ksh, setelah panggilan ke a.ksh itu tidak akan ada.