1

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

4

3 回答 3

2

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

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

于 2013-09-10T08:03:05.503 回答
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)
于 2013-09-10T06:13:12.997 回答
0
unset `env | awk -F= '/^\w/ {print $1}' | xargs`

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

您可以使用 unset VARIABLE 取消设置单个变量

于 2013-09-10T06:11:54.417 回答