シェルは././command-nameをどのように解釈しますか?

シェルは././command-nameをどのように解釈しますか?

hello2現在、作業ディレクトリにはバイナリファイルがあります。

これを実行するには、それを押す必要があり、./hello2出力が表示されます。

ただし、次のコマンドを使用しても././hello2機能します。

シェルがこのコマンドをどのように解釈するかを説明してください。

ベストアンサー1

コマンド実行時

$ ./hello2

hello2シェルはディレクトリ内のファイルを探します.現在の目次。次に、いくつかの規則に従ってスクリプトまたはバイナリを実行します(この場合は興味深いものではありません)。

注文する

$ ././hello2

また、シェルにファイルを実行させます。

これは.、とが./.同じディレクトリであるためです。

各ディレクトリには.ディレクトリエントリがあります。このエントリはディレクトリ自体に対応します。だから話すのは言うのと./同じです。././././././

唯一の違いは、システムがいくつかの追加のディレクトリ検索を実行する必要があることです(シェルがスマートで明白な単純化を確認しない限り)。


各ディレクトリには、..そのディレクトリを指すエントリもあります。目次。

つまりalamin、現在のディレクトリから呼び出すと、次のコマンドもファイルを実行します。

$ ../alamin/hello2

同じ

$ ../alamin/./hello2

そして

$ .././alamin/./hello2

ルートディレクトリは/特別なケースです。対応するカタログ項目は..カタログ項目と同じです。.これは、これを「再定義」するために使用できないことを意味します/..

また見なさい:フォルダへのリンク数が実際の状態を反映していませんか?

おすすめ記事