Bagaimana cara menghapus variabel di baris perintah?

80

Saya telah mencoba perintah berikut untuk mengaktifkan Proxy yaourt:

export ALL_PROXY=http://proxy.example.com:8080

Pertanyaannya adalah bagaimana cara menonaktifkan proxy yaourt? Secara umum, bagaimana saya bisa menghapus nilai variabel dalam shell saat ini?

Hamed Kamrava
sumber
7
Cobaunset ALL_PROXY
coffeMug
@coffeMug mungkin juga membuat itu menjadi jawaban, Anda juga dapat mempertimbangkan mencuri beberapa info dari sini: stackoverflow.com/a/12263914/1081936
terdon
selain jawaban yang diterima, jika ada perintah yang sering Anda jalankan yang menggunakan variabel lingkungan yang Anda tidak ingin atur atau ubah selama sisa sesi shell Anda, Anda bisa menjalankannya seperti: $ ALL_PROXY=http://proxy.example.com:8080 yaourtyang akan mengatur envvar hanya untuk perintah dijalankan. Anda bisa meletakkan FOO=bar BAZ=batvariabel sebanyak yang Anda inginkan sebelum perintah dijalankan.
onlynone

Jawaban:

113

Untuk menghapus variabel lingkungan, jalankan

unset ALL_PROXY

Perhatikan bahwa variabel lingkungan hanya berlaku dalam suatu program dan program itu diluncurkan. Jika Anda mengatur variabel lingkungan di satu jendela shell, itu tidak mempengaruhi jendela shell lainnya.

Jika Anda telah menambahkan export ALL_PROXY=…ke file inisialisasi, hapus dari sana.

Anda dapat menjalankan exporttanpa argumen untuk melihat variabel lingkungan apa yang diatur dalam shell saat ini.

Ingat bahwa untuk membuat variabel shell tersedia untuk program yang dimulai oleh shell itu, Anda perlu mengekspornya, baik dengan menjalankan export VARsetelah penugasan VAR=VALUEatau dengan menggabungkan keduanya ( export VAR=VALUE).

Gilles
sumber
19

Untuk membatalkan variabel terikat dalam penggunaan bash unset VARIABLE( unset ALL_PROXYdalam kasus Anda). Perintah ini sebenarnya menghapus variabel. Anda juga dapat mengatur nilai variabel menjadi kosong oleh

VARIABLE=

atau

VARIABLE=""

Perbedaannya adalah bahwa kedua perintah terakhir tidak menghapus variabel. Anda dapat melihat perbedaannya dengan menggunakan -utanda setuntuk memaksa agar memperlakukan variabel yang tidak disetel sebagai kesalahan saat mengganti:

/home/user1> var=""
/home/user1> echo $var

/home/user1> set -u
/home/user1> echo $var

/home/user1> unset var
/home/user1> echo $var
-bash: var: unbound variable

Dalam contoh di atas, bash mengeluh tentang vartidak terikat (setelah membatalkan nilainya) yang merupakan kesalahan yang diharapkan (perhatikan bahwa ini tidak terjadi pada perintah gema kedua, artinya varmemiliki nilai yang emptyatau null).

coffeMug
sumber
bagaimana jika saya memiliki variabel dalam file skrip shell saya dan saya sumber file itu, lalu bagaimana saya akan menghapusnya?
Abhinav
@Abhinav digunakan unsetdalam skrip. Hal yang sama berlaku.
coffeMug