【发布时间】:2021-12-09 04:17:02
【问题描述】:
ITNOA
我想写bash脚本,去掉一些环境变量
我的问题是当我在命令下运行时
env | grep -i _proxy= | cut -d "=" -f1 | xargs -I {} echo {}
我看到下面的结果
HTTPS_PROXY
HTTP_PROXY
ALL_PROXY
但是当我将echo 替换为unset 时,如下所示
env | grep -i _proxy= | cut -d "=" -f1 | xargs -I {} unset {}
我看到下面的错误
xargs: unset: No such file or directory
我的问题是什么?如果我错误地使用了xargs?
【问题讨论】:
-
unset只能更改运行它的 shell(此外,它是一个内置的 shell,shell 的一部分,而不是外部命令)。xargs不是内置的外壳程序,因此它本身和它运行的任何东西都是与该外壳程序分开的进程(这意味着它根本无法运行外壳程序内置程序,除非它启动一个外壳程序来运行它们......如果它这样做,新的 shell 与启动 xargs 的 shell 不同,并且无法修改原始/父 shell 的状态)。