为什么下面的内容是错误的?
$ cd "~/my data"
bash: cd: ~/my data: No such file or directory
$ cd ~"/my data"
bash: cd: ~/my data: No such file or directory
$ cd ~/"my data" # works
答案1
那如何bash波形符扩展作品:
如果单词以不带引号的波浪号字符 ('~') 开头,则直到第一个不带引号的斜杠之前的所有字符(或所有字符,如果没有不带引号的斜杠)都将被视为波浪号前缀。
假设您的主目录是/home/user
并且您当前位于其中,第一的例子:
cd "~/my data"
这会尝试cd
进入路径为 的目录/home/user/~/my data/
。请注意,这~
是目录或文件名中的有效字符。
这第二例子:
cd ~"/my data"
这与第一个的作用相同。如果您想知道,那是因为斜杠被引用了,如上面的引文中所述。
这第三例子:
cd ~/"my data"
这会进行波形符扩展,因为斜杠没有被引用,因此被$HOME
环境变量的内容替换。这会更改目录/home/user/my data/
。