Apa perbedaan antara:
a=b
dan
export a=b
Di bash?
Saya mengerti bahwa keduanya mendefinisikan variabel lingkungan, tetapi saya tidak sepenuhnya memahami perbedaannya.
bash
shell
process
environment-variables
Adam Matan
sumber
sumber
Jawaban:
export
menyebarkan variabel ke subproses.Misalnya, jika Anda melakukannya
maka subproses yang memeriksa FOO tidak akan menemukan variabel sedangkan
akan memungkinkan subproses untuk menemukannya.
Tetapi jika
FOO
telah sudah didefinisikan sebagai variabel lingkungan, makaFOO=bar
akan mengubah nilai dari variabel lingkungan.Sebagai contoh:
Kerang yang lebih tua tidak mendukung
export FOO=bar
sintaksis; kamu harus menulisFOO=bar; export FOO
.sumber
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.Jika Anda tidak menggunakan
export
, Anda tidak mendefinisikan variabel lingkungan; hanya variabel shell.Variabel Shell hanya tersedia untuk proses shell; variabel lingkungan tersedia untuk setiap proses selanjutnya, bukan hanya shell.
sumber
Juga, jika Anda ingin agar variabel tersedia untuk shell panggilan tanpa menggunakan ekspor, Anda dapat melakukan ini:
File a.ksh adalah -
Pada prompt, jalankan ini
Ini akan menjalankan perintah di dalam shell yang sama dan $ FOO akan tersedia.
Sedangkan,
Akan membuat $ FOO hanya tersedia dalam a.ksh, setelah panggilan ke a.ksh itu tidak akan ada.
sumber
Selain apa yang sudah dijawab, kedua pernyataan ini tidak harus mendefinisikan (yaitu membuat vs set) variabel lingkungan sebagai "a" mungkin sudah ada sebagai variabel shell atau lingkungan.
Dalam kasus yang terakhir, kedua pernyataan tersebut sangat setara.
sumber