找不到 ZSH 别名

ZSH aliases not found

当我打开 ~/.zshrc 文件并添加 alias homestead=“cd ~/Homestead” 时,我希望能够键入 homestead 并转到 Homestead 文件夹。

相反,我收到以下错误:

zsh: command not found: “cd

即使我使用单引号,即 alias homestead='cd ~/Homestead' 和 运行 source ~/.zshrc 我也会得到同样的错误。

更新:另外,当我 运行 which homestead 我得到 homestead: aliased to "cd

我该如何解决这个问题?

也许您的语言环境设置会在您发布时自动将双引号 " 更正为本地化的双引号 "。由于这在 shell 中不被识别为有效引号,所以一个简单的 white-space 会破坏字符串。所以实际的别名是 “cd.

至于为什么alias homestead='cd ~/Homestead'不行,看来你在~/.zshrc里改了别名。从which homestead的结果可以看出,alias homestead='cd ~/Homestead'并没有真正起作用。可能后面的.zshrc里还藏着一行alias homestead=“cd ~/Homestead”

双引号必须是ASCII,不能是ASCII范围外的Unicode。在编辑器中加载文件,禁用单引号和双引号的任何自动处理。然后用 ASCII 引号 "(代码十进制 34,十六进制 22,八进制 042)替换有趣的引号。或者在提示符下键入命令,然后将其剪切并粘贴到您的编辑器中。如果一切都失败了,请在 .zshrc

的末尾添加别名
printf 'alias homestead="cd ~/homestead"' >> ~/.zshrc

用八进制转储验证结果,

od -bc .zshrc

引号上方的数字应显示为 042

您根本不需要在 zsh 中定义此别名。将以下内容添加到您的 .zshrc:

setopt autocd
cdpath+=(~)

第一个允许您将目录名称视为命令,它隐式地将当前 shell 的工作目录设置为命名目录。第二个指定如果当前目录没有名称与 cd 一起使用的目录(或本身与 autocd 集一起使用),则尝试在 [=] 中命名的目录中找到它15=] 参数.

有了这两个,只需键入 Homestead 将首先尝试 运行 一个名为 Homestead 的命令;如果失败,它会尝试 cd./Homestead,如果失败 that,最终会成功 cd~/Homestead

答案是在 Sublime Text 中打开 ~/.zshrc 而不是 TextEdit,并检查 " 是否在八进制转储中显示为 042

只是说对我来说修复它的是我列表中第一个带有问号的别名中的错误。

刚刚切换到 Mac OS Catalina,~/.bashrc 切换到 ~/.zshrc 我猜 zsh 不支持问号。

也许它会帮助从 Google 来到这里的人像我一样搜索。