我认为 env -i
在空白环境中运行命令,但以下代码(在 bash v4.4 函数中)可以工作 - 例如,命令仅使用环境变量执行来自 ENVFILE。
那么,为什么 env -i
没有删除显式设置的环境变量 ENVFILE 和 COMMAND?
export local ENVFILE="$1" COMMAND="$2"
/usr/bin/env -i /bin/bash -c ". ${ENVFILE}; ${COMMAND}"
最佳答案
因为它们在当前 shell 中被替换,而不是被调用的 shell。
export local ENVFILE="$1" COMMAND="$2"
/usr/bin/env -i /bin/bash -c '. ${ENVFILE}; ${COMMAND}'
关于bash - 'env -i' - 不会从子 shell 中删除所有环境变量,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49358753/