zsh 别名在执行时丢弃第一个字符

zsh alias dropping first character at execution

好的,我的别名是 alias pinecalcmanj="scp ~/.local/share/evolution/calendar/system/calendar.ics $pinemanjaro:~/.local/share/evolution/calendar/system/calendar_computer.ics"。 运行 命令行中的别名,我看到了 cp: cannot create regular file ':~/.local/share/evolution/calendar/system/calendar_computer.ics': No such file or directory。如果我将别名内容复制并粘贴到命令行中,它运行良好。别名中的第一个字符似乎在执行中被删除了。

不过,这里有一个有趣的问题。我在 's' 之前添加了一个白色的 space 并执行了别名,给出了新的别名 alias pinecalcmanj=" scp ~/.local/share/evolution/calendar/system/calendar.ics $pinemanjaro:~/.local/share/evolution/calendar/system/calendar_computer.ics"。嘿,很快,它起作用了。伟大的。我用 space 保存了别名。

好吧,下次我去使用别名时它没有用,看到同样的问题,'s' 没有被识别。我删除了白色的 space,保存了 zshrc,然后 运行 别名就成功了。所以,似乎每次我想使用别名时,我都需要打开 zshrc 并删除一个白色的 space 或添加一个才能使其工作。我在这里很困惑。有什么想法吗?

我认为如果将双引号替换为单引号会有效,如下所示:

alias pinecalcmanj='scp ~/.local/share/evolution/calendar/system/calendar.ics $pinemanjaro:~/.local/share/evolution/calendar/system/calendar_computer.ics'

原因是单引号不会插入任何内容,但双引号会。 Bash 手册是这样说的: