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