主pwd
に組み込まれていませんが、.
bashシェルに組み込まれているからですか?
たとえば、次の例では異なります。
/tmp/ttt$ mv ../ttt ../tttt
/tmp/ttt$ pwd
/tmp/ttt
/tmp/ttt$ cd .
/tmp/tttt$
ベストアンサー1
.
Bash(または他のシェル)に組み込まれていません。各ディレクトリにエントリ.
と..
。任意のディレクトリにCDを挿入して実行して確認できますls -lia
。.
と項目が表示されます..
。ls
inode番号を取得するには、'-i'フラグを使用するように要求しました。その.
合計を書き留めます..
。 1つcd ..
のディレクトリに移動しますcd /something/soemthingelse/whatever
。やり直すls -lia
。 inode 番号は、.
最初のリストの inode 番号と同じです。..
各ディレクトリは「。」そして「..」という名前のディレクトリとして作成されます。この「。」エントリの inode 番号は親ディレクトリのディレクトリ名と同じです。 「..」エントリは常に親ディレクトリです。これにより、ls -li /
「.」と「..」が同じ値を持つことがわかります。
このルールを使用すると、現在のディレクトリを参照するために特別なコードは必要ありません。名前は常に「.」です。特別なケースコード「ディレクトリに移動」は必要ありません。いつも「..」です。唯一の特別なケースは、ルートおよびネットワークマウントファイルシステムです。ファイルシステムのルートには、「.」と「..」が同じinode番号を持ち、違いはありません。ネットワークにマウントされたファイルシステムは、マウントポイントに連続していないinode番号を持ち、その動作はリモートファイルシステムが何であるか、それをマウントするために使用されるプロトコルによって異なります。
プロンプトの変更の場合、 を呼び出すと、mv ../ttt ../tttt
実際にはシェルの作業ディレクトリ名が変更されます。これを行う前に、作業ディレクトリを確認するシェルコマンドを呼び出さないため、古い名前が途中で報告されcd .
ます。pwd
/tmp/tt