Dışa aktarılan bir ortam değişkenini nasıl silerim?


1558

Gnuplot kurmadan önce ortam değişkenini ayarladım GNUPLOT_DRIVER_DIR = /home/gnuplot/build/src. Kurulum sırasında bir şeyler ters gitti.

GNUPLOT_DRIVER_DIROrtam değişkenini kaldırmak istiyorum . Nasıl başarabilirim?


2
Balık kabuğunda bunu nasıl yapacaklarını arayanlar için bkz. Stackoverflow.com/questions/30703860/… (bu soru belirli bir kabuk için olmasa da)
Elijah Lynn

Yanıtlar:


2465

unset aradığınız komuttur.

unset GNUPLOT_DRIVER_DIR

5
ama bu sadece bir oturum için işe yarıyor, peki kesinlikle ayarlamayı kaldırmak? veya değişkenin nerede ayarlandığını araştırabilir, böylece gidip silebilirsiniz?
eLRuLL

31
Bu, terminal örneği başına çalışmalıdır. Genellikle, bir terminal penceresi her açıldığında, ~ / .bashrc, ~ / .profile vb. Gibi çeşitli yerlerden değişkenler yükler. Bir terminal örneğinde ayarladığınız hiçbir değişken diğerine taşınmaz. Terminali her açtığınızda otomatik olarak ayarlanan bir değişkeniniz varsa, bunun için ana dizininizdeki çeşitli gizli dosyalara bakmayı deneyin. Veya nerede ayarlandığını görmek için "grep -r <X> ~" komutunu deneyin, burada <X> değişkenin adıdır. Ana dizininizde çok fazla dosya varsa bu biraz zaman alabilir.
matt5784

1
Bu, değişkeni kabuktan da kaldırır. unexportBunu yapmanın tek yolu var T="$MYVAR"; unset MYVAR; MYVAR="$T"; unset Tmı?
olejorgenb

1
@olejorgenb En azından bash'da declare +x MYVAR, dışa aktarmayı kaldırmayı ancak değeri geçerli kabukta tutmayı söyleyebilirsiniz .
Peder Klingenberg

4
@PederKlingenberg Bash'te de export -n MYWARçalışıyor.
jarno

170

Bash'de bir ortam değişkeni oluşturma ve silme adımlarını açıklamak için:

DUALCASE değişkeninin var olup olmadığını test edin:

el@apollo:~$ env | grep DUALCASE
el@apollo:~$ 

Değişmez, bu nedenle değişkeni oluşturun ve dışa aktarın:

el@apollo:~$ DUALCASE=1
el@apollo:~$ export DUALCASE

Orada olup olmadığını kontrol edin:

el@apollo:~$ env | grep DUALCASE
DUALCASE=1

Orada. Yani ondan kurtulun:

el@apollo:~$ unset DUALCASE

Hala orada olup olmadığını kontrol edin:

el@apollo:~$ env | grep DUALCASE
el@apollo:~$ 

DUALCASE dışa aktarılan ortam değişkeni silinir.

Yerel ve ortam değişkenlerinizi temizlemeye yardımcı olacak ek komutlar:

Oturum açıldığında tüm yerel değişkenleri varsayılana geri alın:

el@apollo:~$ CAN="chuck norris"
el@apollo:~$ set | grep CAN
CAN='chuck norris'
el@apollo:~$ env | grep CAN
el@apollo:~$
el@apollo:~$ exec bash
el@apollo:~$ set | grep CAN
el@apollo:~$ env | grep CAN
el@apollo:~$

exec bash command tüm yerel değişkenleri temizledi, ancak ortam değişkenlerini temizlemedi.

Oturum açıldığında tüm ortam değişkenlerini varsayılana geri döndürün:

el@apollo:~$ export DOGE="so wow"
el@apollo:~$ env | grep DOGE
DOGE=so wow
el@apollo:~$ env -i bash
el@apollo:~$ env | grep DOGE
el@apollo:~$

env -i bash command, oturum açıldığında varsayılan olarak tüm ortam değişkenlerini temizledi.


10
belki echo $VARIABLEdaha iyidir env | grep VARIABLE, tüm değişkenleri yazdırması ve ardından çıktısını başka bir (grep) işlemine göndermesi gerekmediğinden daha hafiftir. Ayrıca, env | VARIABLEaynı kalıpla eşleşen birden fazla değişkeni yakalayabilir. Artı2, echo $VARIABLE<Tab> tuşuna basarak değişkenin adını tamamlamayı mümkün kılar (varsa, bu da yapmak istediğinize bir ipucu olabilir).
Rodrigo Gurgel

10
'env | grep VARIABLE ',' echo $ VARIABLE 'den daha iyidir çünkü gerçekten gittiğini söyleyebilirim
calasyr

8
@RodrigoGurgel, echo $VARIABLEVARIABLE'ın bir kabuk değişkeni (burada "yerel değişken" olarak adlandırılır) veya adım adımının bütün noktası olan bir ortam değişkeni olup olmadığını söylemez.
hmijail resignees

4
Not env -i bashistenmeyen sonuçları olabilecek (Mac'te en az) bir altkabuk yaratmak gibi görünüyor.
Mark Chackerian

2
Echo kullanan @RodrigoGurgel, varolan değişkenin boş dize veya nul olarak ayarlandığını göstermez. Ancak, değişkeninizi test etmek için uygun bir yol olacaktır env | grep -e '^VARNAME='.
Thomas

5

Orijinal soru değişkenin nasıl ayarlandığından bahsetmediğinden ve bu sayfaya bu belirli cevabı arayan varlığımdan dolayı, aşağıdakileri ekliyorum:

C kabuğunda (csh / tcsh) bir ortam değişkeni ayarlamanın iki yolu vardır:

  1. set x = "something"
  2. setenv x "something"

Davranıştaki fark, setenv komutuyla ayarlanan değişkenlerin otomatik olarak alt kabuğa aktarılması ve set ile ayarlanan değişkenin olmamasıdır.

İle değişken seti unset ayarlamak , kullanım

unset x

Setenv ile bir değişken kümesinin ayarını kaldırmak için

unsetenv x

Not: Yukarıdakilerin hepsinde, değişken adının 'x' olduğunu varsayıyorum.

kredi:

https://www.cyberciti.biz/faq/unix-linux-difference-between-set-and-setenv-c-shell-variable/ https://www.oreilly.com/library/view/solaristm-7- referans / 0130200484 / 0130200484_ch18lev1sec24.html


Set / setenv wrt alt kabukları arasındaki farklar için harika bir ek!
seviye

4

bu da işe yarayabilir.

export GNUPLOT_DRIVER_DIR=

10
Değişken hala var, ancak envkomutun çıktısında görebileceğiniz gibi boş bir dize içeriyor . Değişkeni kullanan uygulamanın, var olmayan ve boş ortam değişkeni arasında ayrım yapmaması durumu olabilir.
Palec

1
evet içerecektir, bu sadece değişken kaldırmak değil değeri kaldırmak oldu. Ama evet kullanabilirsiniz - unset GNUPLOT_DRIVER_DIR.
Nilesh K.

Bu PAGER değişkeni için geçerli değildir. PAGER ayarımı ayarlamayı denedim export PAGER=, ancak bu sadece sayfalamayı tamamen devre dışı bıraktı - tüm adam sayfalarım doğrudan terminale atıldı. unset PAGERvarsayılan davranışa geri döndürerek hile yaptı.
Çad

1

Yukarıdaki cevaplarda belirtildiği gibi , değişkeni ayarlamak için unset GNUPLOT_DRIVER_DIRkullandıysanız çalışmalıdır export. Kalıcı olarak ayarladıysanız ~/.bashrcveya ~/.zshrcdaha sonra oradan kaldırmak işe yarayacaktır.

Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.