Katakanlah saya mengekspor variabel:
foo=bar
export foo
Sekarang, saya ingin membatalkan ekspornya. Itu untuk mengatakan, jika saya lakukan sh -c 'echo "$foo"'saya tidak seharusnya bar. fooseharusnya tidak muncul di sh -clingkungan sama sekali.
sh -chanyalah sebuah contoh, cara mudah untuk menunjukkan keberadaan suatu variabel. Perintah itu bisa berupa apa saja - itu mungkin sesuatu yang perilakunya dipengaruhi hanya oleh kehadiran variabel di lingkungannya.
Saya bisa:
unsetvariabel, dan kehilangan itu- Hapus menggunakan
envuntuk setiap perintah:env -u foo sh -c 'echo "$foo"'- tidak praktis jika Anda ingin terus menggunakan shell saat ini untuk sementara waktu.
Idealnya, saya ingin menyimpan nilai variabel, tetapi tidak memilikinya muncul sama sekali dalam proses anak, bahkan sebagai variabel kosong.
Saya kira saya bisa melakukan:
otherfoo="$foo"; unset foo; foo="$otherfoo"; unset otherfoo
Ini berisiko menginjak otherfoo, jika sudah ada.
Apakah itu satu-satunya jalan? Apakah ada cara standar?
sh -cPerintah ini hanyalah sebuah contoh. Ambil perintah apa pun di mana Anda tidak dapat menghapus variabel sebagai gantinya, jika Anda mau.
mktempjika itu cukup portabel, dan menghapus nilai, dan sumber file sementara untuk menetapkan variabel. Setidaknya file sementara dapat dibuat dengan nama yang kurang lebih berbeda dengan variabel shell.