如何在设置了多个环境变量的bash中启动命令

时间:2016-11-01 11:16:40

标签: bash environment-variables command-line-interface

使用一个环境变量,它就像:

bash$> foo=1 echo "$foo"
1

[编辑:如下所述,即使这项工作没有成功,但只是因为$ foo之前由其他一些试验设定。应该给予" unset foo"审判之间。]

但是如果需要在启动命令的同一命令行中设置多个环境变量呢? 像这些不做的工作:

bash$> foo=1 bar=2 echo "$foo $bar"
1

bash$> foo=1 && bar=2 echo "$foo $bar"
1

bash$> (foo=1;foo=2) && echo "$foo $bar"
1 

bash$> (foo=1 && foo=2) && echo "$foo $bar"
1 

有可能吗? (用脚本很明显)

2 个答案:

答案 0 :(得分:4)

我假设您不希望为当前shell设置这些环境变量,以便后续命令不会受到这些环境变量的影响。那怎么样:

$ foo=1 bar=2 bash -c 'echo $foo - $bar '
1 - 2

$ echo $foo
<no output>

$ echo $bar
<no output>

请注意,环境变量的范围仅限于bash子shell。如接下来的两个命令所示,这些env变量不会在当前shell中结束。

如果您不关心最终在当前shell中的env变量,那么只需以下就足够了:

$  foo=1; bar=2; echo "$foo $bar"
1 2

$  echo $foo - $bar
1 - 2

答案 1 :(得分:-1)

$ foo=5;bar=6; echo "$foo $bar"
5 6