首页 > 解决方案 > Bash:是否可以通过评估命令为单个子进程设置环境变量?

问题描述

这工作得很好:

>$ ENV=var printenv
ENV=var

这也有效,但它为整个 shell 设置了环境变量:

>$ export $(echo ENV=var)

>$ printenv
ENV=var

我想做这样的事情,但它失败了:

>$ $(echo ENV=var) printenv
bash: ENV=var: command not found

是否有另一种方法通过评估命令将环境变量传递给单个子进程?

标签: bashshell

解决方案


使用env.

env "$(echo ENV=var)" printenv

或使用eval但知道如何安全使用它。

eval "$(echo ENV=var)" printenv 

无论哪种方式,在这两个命令中,您都必须确保输出经过消毒。


推荐阅读