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

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

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

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

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

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

答え1

コマンド実行時

$ ./hello2

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

注文する

$ ././hello2

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

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

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

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


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

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

$ ../alamin/hello2

同じ

$ ../alamin/./hello2

そして

$ .././alamin/./hello2

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

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

答え2

たとえば、コマンド名を入力すると、システムは次のhelloファイルを検索します。PATH

$ echo $PATH
/usr/local/bin:/usr/bin:/bin:/usr/local/games:/usr/games

システムがこれらのディレクトリにコマンドが見つからない場合は、command not foundエラーメッセージが表示されます。

コマンドを先頭に追加して、./検索を現在のディレクトリに制限できます。

各ディレクトリには.ディレクトリ自体に対応するエントリがあるため、入力を介して実行するすべての操作は、././helloディレクトリ自体でコマンドを見つけることに制限されます(2回)。

努力するcd ./././././

答え3

答えは正しいですが、他のことを言いたいのですが。次のコマンドを実行します。

┌─[luvpreet@DHARI-Inspiron-3542] - [~/Desktop/drf-vogo] - [2017-09-01 08:57:42]
└─[0] ls -la
total 60
drwxrwxr-x 14 luvpreet luvpreet 4096 Aug 14 15:30 .
drwxr-xr-x 21 luvpreet luvpreet 4096 Sep  1 00:27 ..

最初の2行には...

これで、.現在存在しているディレクトリへのポインタです。..親ディレクトリへのポインタです。

あなたがこれをするときcd ..

monitoring-server@monitoring-server:~/kibana-project$ cd ..
monitoring-server@monitoring-server:~$ 

親ディレクトリに移動します。

あなたがこれをするときcd .

monitoring-server@monitoring-server:~/kibana-project$ cd .
monitoring-server@monitoring-server:~/kibana-project$ 

同じディレクトリに残ります。

これで、親ディレクトリのファイルを../testfile.txtポイントします。現在のディレクトリのテストファイルを指しますtestfile.txt./testfile.txt

したがって././././././././、可能であれば同じディレクトリに保管してください。

../../../../親ディレクトリまで1レベル上に続きます。

関連情報