【发布时间】:2014-03-31 21:46:57
【问题描述】:
如果你这样做(在 bash 中):
ENV_ONE=1 ENV_TWO=2 command
command 将在其调用中接受并使用环境变量。但是,如果你这样做:
ENV_ONE=1 ENV_TWO=2 clear && command
clear 将使用命令行中设置的环境变量,它们不会传递给命令。如果您想执行以下操作,这是一个问题:
alias command='clear && command'
我用谷歌搜索了一遍,但找不到在命令之前表示环境变量的 bash 内置函数。我的问题是:如何将 CLI 声明的环境变量传递给第二个命令?
【问题讨论】:
-
clear THEN 设置它们?
clear && ENV1=.. ENV2=... command? -
仅仅因为你可以在没有任何中间逻辑的情况下进行多个声明,我不明白你为什么会这样做,因为它与 bash 中的其他任何东西都不吻合。所以就做
ENV_ONE=1 && ENV_TWO=2 && clear && command或ENV_ONE=1; ENV_TWO=2; clear && command取决于你是否真的需要他们相互依赖 -
@BroSlow,
ENV_ONE=1; foo与ENV_ONE=1 foo不同。它们做不同的事情:前者设置一个 shell 变量,即使在命令完成后仍然存在;后者只为执行命令foo设置环境变量。 -
@CharlesDuffy 公平点,支持
the other guy's回答