在安装 gnuplot 之前,我设置了环境变量 GNUPLOT_DRIVER_DIR = /home/gnuplot/build/src
。在安装过程中,出了点问题。
我想删除 GNUPLOT_DRIVER_DIR
环境变量。我怎样才能实现它?
unset
是您要查找的命令。
unset GNUPLOT_DRIVER_DIR
在 Bash 中创建和删除环境变量的演练:
测试 DUALCASE 变量是否存在(空输出):
env | grep DUALCASE
它没有,所以创建变量并导出它:
DUALCASE=1
export DUALCASE
检查它是否存在:
env | grep DUALCASE
输出:
双写=1
它就在那里。所以摆脱它:
unset DUALCASE
检查它是否仍然存在(空输出):
env | grep DUALCASE
DULCASE 导出的环境变量被删除。
帮助清除本地和环境变量的额外命令:
登录时将所有局部变量恢复为默认值:
CAN="chuck norris"
set | grep CAN
输出:
CAN='查克诺里斯'
env | grep CAN # Empty output
exec bash
set | grep CAN
env | grep CAN # Empty output
exec bash
命令清除了所有局部变量,但没有清除环境变量。
登录时将所有环境变量恢复为默认值:
export DOGE="so wow"
env | grep DOGE
输出:
DOGE=哇
env -i bash
env | grep DOGE # Empty output
env -i bash
命令在登录时将所有环境变量清除为默认值。
echo $VARIABLE
比 env | grep VARIABLE
好,它更轻,因为它不需要打印所有变量然后将其输出发送到另一个 (grep) 进程。另外,env | VARIABLE
可以捕获多个与相同模式匹配的变量。 Plus2, echo $VARIABLE
可以通过点击 <Tab> 来完成变量的名称。 (如果它存在,那也可能暗示你想要做什么)。
echo $VARIABLE
不会告诉您 VARIABLE 是 shell 变量(此处称为“局部变量”)还是环境变量,这是演练的重点。
env -i bash
似乎正在创建一个子shell(至少在 Mac 上),这可能会产生意想不到的后果。
env | grep -e '^VARNAME='
。
最初的问题没有提到变量是如何设置的,但是:
在 C shell (csh/tcsh) 中有两种方法可以设置环境变量:
设置 x = "某事" setenv x "某事"
行为的不同之处在于,使用 setenv 命令设置的变量会自动导出到子 shell,而使用 set 设置的变量则不会。
要使用 set 取消设置变量集,请使用
unset x
要使用 setenv 取消设置变量,请使用
unsetenv x
注意:在上述所有内容中,我假设变量名是“x”。
学分:
TCSH / CSH:set vs setenv 命令差异
set, unset, setenv, unsetenv, export — Shell 环境变量内置函数
这也可能有效。
export GNUPLOT_DRIVER_DIR=
env
命令的输出中看到。可能只是使用该变量的应用程序不区分不存在和空环境变量的情况。
export PAGER=
取消我的 PAGER 设置,但这只是完全禁用了分页——我的所有手册页都直接转储到了终端。 unset PAGER
成功了,将其恢复为默认行为。
如上述答案中所述,如果您使用 export
设置变量,unset GNUPLOT_DRIVER_DIR
应该可以工作。如果您已将其永久设置在 ~/.bashrc
或 ~/.zshrc
中,那么只需将其从那里删除即可。
unexport
做T="$MYVAR"; unset MYVAR; MYVAR="$T"; unset T
的唯一方法吗?declare +x MYVAR
删除导出但将值保留在当前 shell 中。export -n MYWAR
在 Bash 中也可以使用。