为什么 foo=bar 与 foo=bar 不同?

为什么 foo=bar 与 foo=bar 不同?

该命令中的空格的解释是什么foo= bar

为什么有foo=bar不同foo= bar的解释

示例(Ubuntu bash)

developer@1604:~$ foo=bar
developer@1604:~$ foo= bar
The program 'bar' is currently not installed. You can install it by typing:
sudo apt install bar

答案1

这是语法:Bash 变量使用紧跟在赋值运算符之后的值进行初始化=。事情就是这样……

当您这样做时foo= bar,您将向该变量分配一个空字符串foo,然后执行该命令bar

答案2

当您这样做时foo= bar,您将向环境变量分配一个空字符串foo,然后执行该命令bar。它可用于将环境变量传递给新的执行。

为什么不一样

空格是分隔符(用于分隔事物):添加空格使其成为两个事物foo=bar。第一个是赋值,第二个是告诉 bash 查找文件并执行它。第一个是可选的,因此您通常只会看到第二个。第二个不是可选的:如果您只看到一个赋值,它会做一些稍微不同的事情,它分配给一个 shell 变量(不是环境变量,除非前面带有export)。

答案3

foo= bar:执行命令前bar,赋值 foo为空。正确的做法是foo=bar变量名和赋值后不要有空格。

答案4

在 shell linux/unix 命令中,当您输入 时foo=bar,您将字符串 bar 放入foo变量中。为了进行检查,您可以输入echo $foo应该返回的内容,bar这就是变量foo包含的内容

当您输入foo= bar空格时,shell 解释器不会在 foo 变量和句柄 bar 中放置任何内容,作为通过 PATH 变量的应用程序命令。由于 shell 在 PATH 变量中没有找到 bar 命令,并且您使用的是 Ubuntu 发行版,因此系统会询问您是否要安装 bar 应用程序。这只是当您的应用程序未找到时弹出的消息。您可以使用以下命令检查 PATH 变量:echo $PATH。有关此系统变量的更多信息这里

相关内容