如何删除从父进程继承的所有环境变量?

时间:2013-09-10 05:50:49

标签: c linux bash environment-variables

我想删除所有继承的环境变量,你能告诉我怎么做吗?

3 个答案:

答案 0 :(得分:2)

要使用GNU C Library删除Linux中的所有环境变量,可以使用clearenv()。当此功能不可用时(它不在POSIX中),您可以使用environ = NULL代替。在调用execl()或任何变体之前执行此操作。

如果您正在调用某个exec()变体,则可以使用最后一个参数直接使用调用(变体e)来设置环境。使用空环境执行/bin/csh的示例:execle("/bin/csh", "-csh", NULL, NULL)

答案 1 :(得分:1)

如果要取消设置所有已定义的环境变量,可以执行以下操作:

for a in $(/usr/bin/env); do 
  unset $(echo "$a" | /usr/bin/cut -d = -f 1);
done

注意,这也会取消设置PATH,因此您可能希望在之后使用环境初始化shell。

修改 由@opentokix启发的更短版本:

unset $(/usr/bin/env | /usr/bin/cut -d = -f 1 | /usr/bin/xargs)

答案 2 :(得分:0)

unset `env | awk -F= '/^\w/ {print $1}' | xargs`

这可能不是一个好主意,因为它会删除你的路径等。

您可以使用未设置的VARIABLE

取消设置单个变量