ソース比較が異なる動作をするのはなぜですか?

ソース比較が異なる動作をするのはなぜですか?

私は最近それを学んだ

. ./.a.aそして./.a.aそれは同じです。

ただしsource source .a.a、試してみるとエラーが発生します。 IMOは.Bashエイリアスになってsource別の方法で動作してはいけませんが、私が何を見逃しているのでしょうか?

ボーナス、なぜ. .可能ですが不可能ですかsource source

答え1

次の場合は.どこでも交換できません。source

. ./.a.a

効果的に最初のものを変更できます.(少なくともBashでは):

source ./.a.a

2番目は、.置き換えられない現在のディレクトリを表しますsource(特に以前とは異なります./source

source source

source現在のシェルに適した内容で現在のディレクトリのファイルを呼び出すことで問題ありません。どうやって. .いいのかわからない…

. ./.a.aまた、2番目の形式は別々のシェルで実行される./.a.a点で異なります。.a.aバラよりソース("."または"source")とbashでのファイル実行の違いは何ですか?もっと学ぶ。

答え2

sourceはシェルキーワードで、次のように使用する必要があります。sourcefileどこfile有効なシェルコマンドが含まれています。これらのシェルコマンドは、コマンドラインで入力したように現在のシェルで実行されます。今、.fileまったく同じように作られています。

それ以外の場合は、(「このディレクトリにあります」)または(と同じ).などの「現在の作業ディレクトリ」を意味します。./xyzxyza/b/./c/./da/b/c/d

それ以外のファイル名には、「隠された」ファイル(実際にはそうではありません)またはサフィックスを介したファイル形式(ここ)を意味する.一般的な意味しかありません。.foobarfoobar.pdf.pdf

これらの異なる意味は、互いに置き換えて使用することはできません。

関連情報