小编sem*_*ude的帖子

一行设置环境变量和执行命令,在sh和bash中得到不同的结果

我想弄明白,oneliner怎么样

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

实际上是sh.我希望变量var被传递到环境中command,但不应该存在于当前环境中(请不要在最后省略免责声明!)

首先,让我们在bash中尝试它

#bash
$ var=      #just to be sure it's empty
$ var=value echo something
. something
$ echo "$var"
.

$ var=value set something
$ echo "$var"
.
Run Code Online (Sandbox Code Playgroud)

目前,它按预期工作.但是当我们去sh并重新输入相同的输入时,它会是这样的:

#sh
$ var=
$ var=value echo something
. something
$ echo "$var"
.

$ var=value set something
$ echo "$var"
. value
Run Code Online (Sandbox Code Playgroud)

最后一个不同.setsh 是命令某种特殊情况吗?为什么变量var已保存在我们当前的环境中?

免责声明:我知道,echo并且set是shell内置的,因此环境变量,我们将通过他们var=value command都浪费了,但我的问题是关于唯一的语法.我的意思是,它们应该被浪费,但是在sh中,当键入时set,变量以某种方式传递到当前环境中.

linux bash shell sh

5
推荐指数
1
解决办法
380
查看次数

标签 统计

bash ×1

linux ×1

sh ×1

shell ×1