采购 .zshrc 时的奇怪行为

采购 .zshrc 时的奇怪行为

zsh 5.0.2 (x86_64-apple-darwin12.3.0)我正在最新的 MacOSX 上使用。如果有什么区别,我也启用了oh-my-zsh.

.zshrc当我想获取该文件时,shell 似乎丢失了该文件。

以下命令的执行结果应该清楚地暴露我的问题。 (~ »是我的提示)。

文件存在

~ » ls -l .zshrc
-rw-r--r--  1 user  staff  1882 May 16 10:43 .zshrc
~ » [[ -r .zshrc ]] && echo "Exists"
Exists

该文件未被“.”读取。

~ » . .zshrc
.: no such file or directory: .zshrc

我不知道是什么导致了这种行为,尤其是这有效

~ » . "$(pwd)"/.zshrc
Success!

我的问题是:

为什么不起作用. .zshrc

答案1

.命令在您的 中搜索文件$path,默认情况下不会在当前目录中搜索。这就是为什么当您给出绝对路径 ( "$(pwd)"/.zshrc) 时它会起作用。

来自.zsh命令手册:

。文件[参数...]

从文件中读取命令并在当前 shell 环境中执行它们。

如果文件不包含斜杠,或者设置了 PATH_DIRS,则 shell 会在 $path 的组成部分中查找包含文件的目录。除非“.”,否则不会读取当前目录中的文件出现在 $path 中的某个位置。

...

比较source命令:

源文件[arg ...]

与 '.' 相同,但始终搜索当前目录,并且始终先搜索 $path 中的目录。

相关内容