首页 > 解决方案 > zsh 别名在执行时删除第一个字符

问题描述

好的,所以我的别名是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' 之前添加了一个空格并执行了别名,给出了新的别名alias pinecalcmanj=" scp ~/.local/share/evolution/calendar/system/calendar.ics $pinemanjaro:~/.local/share/evolution/calendar/system/calendar_computer.ics". 嘿,很快,它奏效了。伟大的。我用它后面的空格保存了别名。

好吧,下次我去使用别名时它不起作用,看到同样的问题,'s' 没有被识别。我删除了空白,保存了 zshrc,然后运行了别名,它工作了。因此,似乎每次我想使用别名时,我都需要打开 zshrc 并删除一个空格或添加一个空格才能使其工作。我在这里很困惑。有任何想法吗?

标签: zshalias

解决方案


我认为如果用单引号替换双引号会起作用,如下所示:

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

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


推荐阅读