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

Jor*_*amp 4 bash

您好,我正在阅读有关bash脚本的书,作者说,请将以下内容添加到我的.bashrc文件的末尾。 export PATH=~/bin:"$PATH"以便通过在命令行中输入文件名来执行我的文件。但是我注意到,如果我提出export PATH=~/bin:$PATH我可以达到相同的结果。所以我的问题是,带引号的和不带引号的有什么区别?谢谢。

che*_*ner 5

引号不会有任何伤害,但也没有必要。分配由外壳专门处理。从手册页:

变量可以通过以下形式的语句分配给

          name=[value]
Run Code Online (Sandbox Code Playgroud)

如果未提供值,则为变量分配空字符串。所有值都经过波浪号扩展,参数和变量扩展,命令替换,算术扩展和引号删除 (请参见下面的EXPANSION)。

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


Avi*_*Raj 4

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