![为什么点命令(源)对 zsh 中没有路径的文件不起作用?](https://linux22.com/image/1608624/%E4%B8%BA%E4%BB%80%E4%B9%88%E7%82%B9%E5%91%BD%E4%BB%A4%EF%BC%88%E6%BA%90%EF%BC%89%E5%AF%B9%20zsh%20%E4%B8%AD%E6%B2%A1%E6%9C%89%E8%B7%AF%E5%BE%84%E7%9A%84%E6%96%87%E4%BB%B6%E4%B8%8D%E8%B5%B7%E4%BD%9C%E7%94%A8%EF%BC%9F.png)
我最近从 bash 切换到了 zsh。在 bash 中,我使用点别名.
作为 source 命令,例如
. .bashrc
它与. .bashrc
、. ~/.bashrc
、一起工作. ./.bashrc
。
然而,对于 zsh,点别名不能以同样的方式工作。它只适用于文件路径。但如果我使用没有路径的文件,则不行:
这不起作用:
. .zshrc
它会给我这个错误:.: no such file or directory: .zshrc
但这些都有效:
source .zshrc
. ./.zshrc
. ~/.zshrc
答案1
这实际上是标准行为点命令:它使用 $PATH 搜索,就像运行命令时一样——不是常规的相对路径。因此,您可以将常用库放在例如 ~/bin/ 中,然后. libwhatever.sh
从任何目录中轻松加载它们。
执行直接相对路径查找是非标准 Bash 扩展。
(类似地,点.
实际上是“shell 语言”标准中列出的主命令,并且source
是 shell 特定的别名 - 而不是相反。)