bash - 'env -i' - 不会从子 shell 中删除所有环境变量

标签 bash shell environment-variables

我认为 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/

相关文章:

linux - 变量赋值退出shell脚本

azure - Nextjs 应用程序从 Azure 应用程序服务读取配置

linux - 当新文件到达供应商时,bash 文件 cron 作业出现问题

linux - 使用 bash 脚本比较两个文件并打印详细的差异报告

bash 使用陷阱 SIGCHLD 重新启动子进程?

Ruby 版本在终端和 bash 中有所不同

linux - 测试 bash 中是否至少存在一个带有名称前缀的目录

shell - Hive ALTER 命令删除值早于 24 个月的分区

python - 如何设置pip环境路径?

java - 如何在VS Code中设置JAVA环境变量