web-dev-qa-db-ja.com

zshにパスのないファイルでdotコマンド(ソース)が機能しないのはなぜですか?

最近、bashからzshに切り替えました。 bashでは、ソースコマンドにドットエイリアス.を使用しました。

. .bashrc

. .bashrc. ~/.bashrc. ./.bashrcで動作しました。

ただし、zshでは、ドットエイリアスは同じようには機能しません。ファイルへのパスでのみ機能します。しかし、パスのないファイルを使用する場合はそうではありません。

これは動作しません:

. .zshrc

このエラーが発生します:.: no such file or directory: .zshrc

しかし、これらはすべて機能します。

source .zshrc
. ./.zshrc
. ~/.zshrc
3
jost21

これは実際には 標準の動作 ドットコマンドの==:コマンドを実行するときと同じように$ PATH検索を使用します通常の相対パス。したがって、たとえば、共通のライブラリを使用できます。 〜/ bin /そして任意のディレクトリから. libwhatever.shでそれらをロードするだけです。

直接相対パスルックアップの実行は、非標準のBash拡張機能です。

(同様に、ドット.は実際には「シェル言語」標準にリストされているメインコマンドであり、sourceはシェル固有のエイリアスです。その逆ではありません。)

4
user1686