在bash导出语句中使用双引号

时间:2014-12-05 03:54:00

标签: bash

您好我正在阅读一本关于bash脚本的书,作者说要将以下内容添加到我的.bashrc文件的末尾。 export PATH=~/bin:"$PATH"以通过键入其名称从命令行执行我的文件。但是我注意到,如果我放export PATH=~/bin:$PATH,我可以达到相同的效果。所以我的问题是带引号的那个和没有引号的那个有什么区别?感谢。

3 个答案:

答案 0 :(得分:4)

报价不会伤害任何东西,但它们都不是必需的。分配由shell专门处理。从手册页:

  

可以通过表单

的语句分配变量
          name=[value]
     

如果未给出值,则为变量分配空字符串。所有值都经历波浪扩展,参数和变量   扩展,命令替换,算术扩展和          报价删除(参见下面的扩展)。

请注意,分词和路径名生成不以粗体显示在列表中。这些是您尝试通过引用参数扩展来防止的两种类型的扩展,但在此上下文中它们不会执行。相同的规则适用于传递给export内置命令的分配。

答案 1 :(得分:3)

您必须在双引号内包含变量PATH。因此,它将处理具有空格但没有双引号的文件路径,它不会处理其中包含空格的文件名。

答案 2 :(得分:1)

在将JSON字符串分配给终端中的变量时,我面临着同样的事情。

用单引号或双引号引起来

如果字符串包含双引号,则使用单引号,反之亦然。

$ export TEMP_ENV='I like the "London" bridge'
$ echo $TEMP_ENV
>> I like the "London" bridge


$ export TEMP_ENV="I like the 'London' bridge"
$ echo $TEMP_ENV
>> I like the 'London' bridge