linux 环境变量导出,关于Linux:如何删除导出的环境变量?
在安裝gnuplot之前,我設置了環境變量GNUPLOT_DRIVER_DIR = /home/gnuplot/build/src。在安裝過程中,出了點問題。
我想刪除GNUPLOT_DRIVER_DIR環境變量。我怎樣才能做到?
對于那些在魚殼中尋找如何做到這一點的人,請參閱stackoverflow.com/questions/30703860/…(即使這個問題不是針對特定的殼)
你要找的是unset。
unset GNUPLOT_DRIVER_DIR
但這只對一個會議有效,那就讓它不穩定呢?或者搜索變量集在哪里,這樣你就可以去刪除它了?
這應該對每個終端實例都有效。通常,每次打開終端窗口時,它都會從不同的位置加載變量,例如~/.bashrc、~/.profile等。在一個終端實例中設置的任何變量都不會轉移到另一個。如果您有一個變量,每次打開終端時似乎都會自動設置該變量,請嘗試在主目錄中查找該變量的各種隱藏文件?;蛘?#xff0c;要查看設置位置,請嘗試"grep-r~",其中是變量的名稱。如果您的主目錄中有很多文件,這可能需要一段時間。
注:unset不需要在變量名前面加上$。
@用戶83039"不需要",因為在不使用,它不會工作的方式!
不過,這也會從shell中刪除變量。到unexport去做T="$MYVAR"; unset MYVAR; MYVAR="$T"; unset T的唯一方法是什么?
@至少在bash中,你可以說declare +x MYVAR刪除了出口,但將值保留在當前shell中。
@Pederklingeberg export -n MYWAR也在bash工作。
在bash中創建和刪除環境變量的演練:
測試dualcase變量是否存在:
el@apollo:~$ env | grep DUALCASE
el@apollo:~$
它不會,因此創建變量并導出它:
el@apollo:~$ DUALCASE=1
el@apollo:~$ export DUALCASE
檢查是否存在:
el@apollo:~$ env | grep DUALCASE
DUALCASE=1
它在那里。所以把它扔掉:
el@apollo:~$ unset DUALCASE
檢查它是否仍然存在:
el@apollo:~$ env | grep DUALCASE
el@apollo:~$
將刪除dualcase導出的環境變量。幫助清除本地和環境變量的額外命令:
登錄時將所有局部變量重置為默認值:
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命令清除了所有局部變量,但沒有清除環境變量。
在登錄時將所有環境變量重置為默認值:
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命令在登錄時將所有環境變量清除為默認值。
也許echo $VARIABLE比env | grep VARIABLE更好,它更輕,因為它不需要打印所有變量,然后將輸出發送到另一個(grep)進程。另外,env | VARIABLE可以捕獲多個與相同模式匹配的變量。plus2,echo $VARIABLE可以通過點擊來完成變量的名稱(如果它存在,這也可能是您想要做什么的提示)。
env -i bash很酷。謝謝。
"env grep variable"比"echo$variable"好,因為我可以看出它確實不存在了。
@Rodriggurgel,echo $VARIABLE沒有告訴您變量是shell變量(這里稱為"局部變量")還是環境變量(這是演練的整個要點)。
請注意,env -i bash似乎正在創建一個子shell(至少在mac上是這樣),它可能會產生意想不到的結果。
@使用echo的rodrigogurgel不會顯示設置為空字符串或nul的現有變量。不過,就您的觀點而言,測試變量的正確方法是env | grep -e '^VARNAME='。
因為最初的問題沒有提到變量是如何設置的,因為我到了這個頁面尋找這個特定的答案,所以我添加了以下內容:
在C shell(csh/tcsh)中,有兩種方法可以設置環境變量:
set x ="something"
setenv x"something"
不同的是,使用setenv命令設置的變量會自動導出到子shell,而使用set設置的變量則不會。
要使用set取消設置變量集,請使用
unset x
要使用setenv取消設置變量集,請使用
unsetenv x
注意:在以上所有內容中,我假設變量名為"x"。
信用:
https://www.cyberciti.biz/faq/unix-linux-difference-between-set-and-setenv-c-shell-variable/https://www.oreilly.com/library/view/solaristm-7-reference/0130200484/0130200484_ch18lev1sec24.html
關于set/setenv wrt子shell之間的差異的偉大補充!
這也可能有效。
export GNUPLOT_DRIVER_DIR=
變量仍然存在,但它包含一個空字符串,正如您在env命令的輸出中看到的那樣。使用該變量的應用程序可能不會區分不存在的環境變量和空環境變量。
是的,它將包含,這只是為了刪除值,而不是刪除變量。但是可以使用-unset gnuplot_driver_dir。
總結
以上是生活随笔為你收集整理的linux 环境变量导出,关于Linux:如何删除导出的环境变量?的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: Java捕捉异常
- 下一篇: Java中toString函数干嘛用?