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

A. K. 1439 linux environment-variables unset

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

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

Peder Klinge.. 2284

unset 是你正在寻找的命令.

unset GNUPLOT_DRIVER_DIR

  • 这应该适用于每个终端实例.通常,每次打开终端窗口时,它都会从各个位置加载变量,例如〜/ .bashrc,〜/ .profile等.您在一个终端实例中设置的任何变量都不会转移到另一个终端实例.如果您有一个似乎每次打开终端时自动设置的变量,请尝试查看主目录中的各种隐藏文件.或者,要查看它的设置位置,请尝试"grep -r <X>〜",其中<X>是变量的名称.如果您的主目录中有大量文件,这可能需要一段时间. (29认同)
  • 但是这只适用于一个会话,那么取消它肯定会怎么样?或者可能搜索变量集在哪里,所以你可以去删除它? (3认同)
  • @PederKlingenberg`export -n MYWAR`在Bash中也可以使用。 (3认同)

Eric Leschin.. 161

在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`可以通过点击<Tab>来完成变量的名称(如果它存在,那也可能暗示你想做什么). (10认同)
  • 'env | grep VARIABLE'比'echo $ VARIABLE'更好,因为我可以说它真的消失了 (8认同)
  • @RodrigoGurgel,`echo $ VARIABLE`没有告诉你VARIABLE是一个shell变量(这里称为"局部变量")还是环境变量,这是演练的重点. (7认同)
  • 请注意,`env -i bash`似乎正在创建一个子shell(至少在Mac上),这可能会产生意想不到的后果. (3认同)

小智.. 5

因为最初的问题没有提到变量的设置方式,并且因为我已进入此页面寻找具体答案,所以我添加了以下内容:

在C shell(csh / tcsh)中,有两种方法来设置环境变量:

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

在该问题的不同的是,设置变量SETENV命令自动导出到子shell而可变设定与都没有。

要使用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-参考/0130200484/0130200484_ch18lev1sec24.html