Saya sedikit bingung dengan tujuan set
dan export
di Bash (dan saya kira mungkin juga kerang lain).
Saya akan berpikir itu untuk mengatur variabel lingkungan, tetapi itu bisa dilakukan hanya dengan VARIABLE=VALUE
, kan?
Mengetik set
dan juga export
menampilkan nilai yang berbeda.
Jadi apa tujuan mereka?
Jawaban:
export
ekspor ke anak-anak dari proses saat ini, secara default mereka tidak diekspor. Sebagai contoh:set
, di sisi lain, menetapkan atribut shell, misalnya, parameter posisi.Catatan yang
baz
tidak ditugaskanfoo
, itu hanya menjadi parameter posisi literal. Ada banyak hal lain yangset
bisa dilakukan (kebanyakan opsi shell), lihathelp set
.Sedangkan untuk mencetak,
export
dipanggil tanpa argumen mencetak semua variabel di lingkungan shell.set
juga mencetak variabel yang tidak diekspor. Itu juga dapat mengekspor beberapa objek lain (walaupun Anda harus perhatikan bahwa ini bukan portable), lihathelp export
.sumber
foo=bar command
. Ini adalah ekspor implisit untuk satu perintah. Kemungkinan kedua adalah yanghttp_proxy
sudah diekspor di lingkungan Anda sebelum Anda memodifikasinya.Lihat
help set
: set digunakan untuk mengatur atribut shell dan atribut posisi.Variabel yang tidak diekspor tidak diwarisi oleh proses anak.
export
digunakan untuk menandai variabel untuk ekspor.sumber