为什么第一个命令失败,而第二个命令成功?
$ cd ~"/mydata"
bash: cd: ~/mydata: No such file or directory
$ cd ~/"mydata"
答案1
道路波形符扩展作品是这样的波形符前缀由加上第一个不带引号的斜杠之前的所有字符组成~
,如果没有不带引号的斜杠,则添加到单词末尾的所有字符。然后发生的替换取决于波形符前缀;~
、~-
和~+
是特殊情况,否则~
会被删除,其余字符将被视为用户名。请参阅man bash
(如果您的 shell 不是 Bash,请参阅您的 shell 的手册页)。
波浪号后面
~"/mydata"
跟着一个引斜杠,因此波形符前缀是~/mydata
;由于没有名为/mydata
波浪号前缀的用户帐户,因此不会被替换,并且 shell 将查找按字面名称命名的目录~/mydata
,但找不到它。波浪号后面
~/"mydata"
跟着一个不带引号的斜杠,因此如果设置了波浪号,则波浪号将被替换为$HOME
if的内容HOME
,否则将被替换为用户主目录的名称(取自/etc/passwd
); shell 将查找类似/home/
username 的目录名称/mydata
。