最近发现一个问题,macOS 终端的 ~
符号在双引号包裹的情况下不会正常展开为用户目录,具体现象如下:
前提:假设我们当前终端所在的目录是~/Downloads
; Terminal 用的是 macOS 现在默认的zsh
。
open ~/Documents
可以正常打开目标目录;open "~/Documents"
,也就是要打开的目录被双引号包裹了,那么打开的目录是:
/Users/username/Downloads/~/Documents
,自然这个目录是不存在的,所以提示The file /Users/username/Downloads/~/Documents does not exist.
;open "$HOME/Documents"
,可以正常打开目录;我想得到的效果是像预期的那样 open "~/Documents"
可以正常打开目标目录。
我不太清楚这个现象是如何出现的,请教大佬
1
263 2023-01-03 20:46:06 +08:00 1
因为在 shell 中,用双引号引起来,表示双引号内是一个字符串。
|
2
AirTag OP @263 我记得是强制把单引号里面的当作字符串来看待,但是双引号里面的东西是可以转义的。
我以前一直是 open "~/xxx" 这样用没有问题。因为很多路径有空格,我习惯直接双引号包起来。 现在是换了个电脑,这样不好使了,我的 shell 配置和之前的电脑是一样的。 |
3
tianshilei1992 2023-01-03 21:28:37 +08:00 via iPhone
|
4
seanzxx 2023-01-04 02:59:40 +08:00
解决方案是把~移出来
cd ~/"Documents" |
5
ihwbunny 2023-01-04 03:38:33 +08:00
2 中的“/Users/username/Downloads/”是当前路径
解决方法,上面的都说了 |
6
AirTag OP @tianshilei1992 谢谢,这个内容一下子解决了我的好几个疑问。
|