V2EX = way to explore
V2EX 是一个关于分享和探索的地方
Sign Up Now
For Existing Member  Sign In
AirTag
V2EX  ›  macOS

macOS Terminal 终端"~"路径展开问题

  •  
  •   AirTag · Jan 3, 2023 · 2181 views
    This topic created in 1222 days ago, the information mentioned may be changed or developed.

    最近发现一个问题,macOS 终端的 符号在双引号包裹的情况下不会正常展开为用户目录,具体现象如下:

    前提:假设我们当前终端所在的目录是~/Downloads; Terminal 用的是 macOS 现在默认的zsh

    1. 如果执行的命令是 open ~/Documents可以正常打开目标目录;
    2. 如果执行的命令是 open "~/Documents",也就是要打开的目录被双引号包裹了,那么打开的目录是: /Users/username/Downloads/~/Documents,自然这个目录是不存在的,所以提示The file /Users/username/Downloads/~/Documents does not exist.
    3. 如果执行的命令是 open "$HOME/Documents",可以正常打开目录;

    我想得到的效果是像预期的那样 open "~/Documents"可以正常打开目标目录。 我不太清楚这个现象是如何出现的,请教大佬

    1. 这是怎么回事。
    2. 解决方案是啥。
    6 replies    2023-01-04 11:27:18 +08:00
    263
        1
    263  
       Jan 3, 2023   ❤️ 1
    因为在 shell 中,用双引号引起来,表示双引号内是一个字符串。
    AirTag
        2
    AirTag  
    OP
       Jan 3, 2023
    @263 我记得是强制把单引号里面的当作字符串来看待,但是双引号里面的东西是可以转义的。
    我以前一直是 open "~/xxx" 这样用没有问题。因为很多路径有空格,我习惯直接双引号包起来。
    现在是换了个电脑,这样不好使了,我的 shell 配置和之前的电脑是一样的。
    seanzxx
        4
    seanzxx  
       Jan 4, 2023
    解决方案是把~移出来
    cd ~/"Documents"
    ihwbunny
        5
    ihwbunny  
       Jan 4, 2023
    2 中的“/Users/username/Downloads/”是当前路径
    解决方法,上面的都说了
    AirTag
        6
    AirTag  
    OP
       Jan 4, 2023
    @tianshilei1992 谢谢,这个内容一下子解决了我的好几个疑问。
    About   ·   Help   ·   Advertise   ·   Blog   ·   API   ·   FAQ   ·   Solana   ·   3004 Online   Highest 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 49ms · UTC 07:22 · PVG 15:22 · LAX 00:22 · JFK 03:22
    ♥ Do have faith in what you're doing.