env_variable=value && 命令到底做什么

Max*_*kyi 3 shell shell-script

我知道我可以通过在前面添加环境变量来将其传递给命令,如下所示:

env_variable=value command
Run Code Online (Sandbox Code Playgroud)

但今天我不小心&&在变量和命令之间添加了:

env_variable=value && command exactly
                    ^
                    ^
Run Code Online (Sandbox Code Playgroud)

我很好奇它与正确的方法有什么不同。我知道您可以使用&&将命令链接在一起。但有趣的是,该命令没有收到变量,为什么呢?如果有人解释第二个变体与第一个变体到底有何不同以及为什么命令没有看到该变量,我将不胜感激。谢谢

ilk*_*chu 6

foo=bar && somecmd
Run Code Online (Sandbox Code Playgroud)

几乎相同(因为作业不太可能失败)

foo=bar; somecmd
Run Code Online (Sandbox Code Playgroud)

与(在单独的行上)相同

foo=bar
somecmd
Run Code Online (Sandbox Code Playgroud)

这是对名为 的 shell 变量进行赋值foo,然后运行命令somecmd。如果foo不是exported (默认情况下 shell 变量不是),那么它不会出现在somecmd. 但您可以在同一个 shell 中使用。

参见,例如