题 如何删除导出的环境变量?


在安装gnuplot之前,我设置了环境变量 GNUPLOT_DRIVER_DIR = /home/gnuplot/build/src。在安装过程中出现了问题。

我想删除 GNUPLOT_DRIVER_DIR 环境变量。我怎样才能实现它?


1165
2017-07-29 18:58


起源




答案:


unset 是你正在寻找的命令。

unset GNUPLOT_DRIVER_DIR

1869
2017-07-29 19:00



但是这只适用于一个会话,如果不确定它呢?或者可能搜索变量集的位置,以便删除它? - eLRuLL
这应该适用于每个终端实例。通常,每次打开终端窗口时,它都会从各个位置加载变量,例如〜/ .bashrc,〜/ .profile等。您在一个终端实例中设置的任何变量都不会转移到另一个终端实例。如果您有一个似乎每次打开终端时自动设置的变量,请尝试查看主目录中的各种隐藏文件。或者,要查看它的设置位置,请尝试“grep -r <X>〜”,其中<X>是变量的名称。如果您的主目录中有大量文件,这可能需要一段时间。 - matt5784
注意:未设置不需要 $ 在变量名称前面 - user83039
@ user83039“不需要”,因为在不使用,它将无法正常工作! - eis
@olejorgenb至少在bash,你可以说 declare +x MYVAR 删除导出但保留当前shell中的值。 - Peder Klingenberg


在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 命令在登录时将所有环境变量清除为默认值。


141
2018-06-03 23:39



也许 echo $VARIABLE 比...更好 env | grep VARIABLE,它更轻,因为它不需要打印所有变量,然后将其输出发送到另一个(grep)进程。加, env | VARIABLE 可以捕获多个匹配相同模式的变量。 PLUS2, echo $VARIABLE 通过点击<Tab>可以完成变量的名称(如果它存在,那也可能暗示你想做什么)。 - Rodrigo Gurgel
env -i bash 很酷。感谢那。 - Sudipta Basak
'env | grep VARIABLE'比'echo $ VARIABLE'更好,因为我可以说它真的消失了 - calasyr
@RodrigoGurgel, echo $VARIABLE 不告诉你VARIABLE是一个shell变量(这里称为“局部变量”)还是环境变量,这是演练的重点。 - hmijail
注意 env -i bash 似乎正在创建一个子shell(至少在Mac上)可能会产生意想不到的后果。 - Mark Chackerian


这也可行。

export GNUPLOT_DRIVER_DIR=

3
2017-12-20 11:00



该变量仍然存在,但它包含一个空字符串,您可以在输出中看到 env命令。可能的情况是,使用变量的应用程序不区分不存在的和空的环境变量。 - Palec
是的它将包含,这只是删除值不删除变量。但是可以使用 - 未设置GNUPLOT_DRIVER_DIR。 - Nilesh K.