
ソフトリンクを介してディレクトリにCDを挿入すると、次の結果が表示されます。
ls ..
リンクされたディレクトリの親ディレクトリの内容が表示され、cd ..
ソフトリンクの親ディレクトリの内容が表示されます。なぜ違うの?cd ..
次のタブは完了オプションを提供せず、リンクされたディレクトリの親ディレクトリの内容もソフトリンクの親ディレクトリの内容も提供しません。なぜですか?上記の場合、どのディレクトリコマンドのどれがどのディレクトリがリンクされているのか、そのソフトリンクに適用されるのかをどうやって知ることができますか?
答え1
なぜなら、bash(そしておそらく他のシェル)は、シンボリックリンクを含む立ち下がりパスを追跡して、逆追跡を下降のように見せるからです。
cd
Bashは、作業ディレクトリが組み込みシェルである必要があるため、作業ディレクトリにどのようにアクセスしたかを知っています。ls ..
シェルを実行すると、「シンボルパス」grep ..
は有効で翻訳が..
非常に混乱しているため変更できません。
実際、シェルには現在2つの解釈がありますが、..
どちらもまったく役に立たないかのように混乱しています。