.zshrcをソーシングするときの奇妙な動作

.zshrcをソーシングするときの奇妙な動作

zsh 5.0.2 (x86_64-apple-darwin12.3.0)私は最新のMacOSXを使用しています。違いがあればそれも活性化しましたoh-my-zsh

.zshrc私がファイルを取得しようとすると、シェルがファイルを失うようです。

次のコマンドの実行結果は、私の問題を明確に示しています。 (~ »それは私のヒントでした)。

ファイルが存在する

~ » 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 コマンドマニュアル:

。ファイル[パラメータ...]

ファイルからコマンドを読み取り、現在のシェル環境で実行します。

ファイルにスラッシュが含まれていない場合、またはPATH_DIRSが設定されている場合、シェルは$ pathコンポーネントでファイルを含むディレクトリを探します。 $ pathに "."が表示されない場合、現在のディレクトリのファイルを読み取ることはできません。

...

比較するsource注文する:

ソースファイル[引数...]

'.'と同じですが、常に現在のディレクトリを検索し、$ pathのディレクトリを常に最初に検索します。

関連情報