なぜシンボリックリンクディレクトリに..に相対的なファイル/ディレクトリを一覧表示できないのですか?

なぜシンボリックリンクディレクトリに..に相対的なファイル/ディレクトリを一覧表示できないのですか?

/usr/tomcat6/logsに接続されているディレクトリがあります/var/log/tomcat6

ディレクトリを次に変更し、相対パス名を使用してファイルにアクセス/usr/tomcat6/logsしようとすると、ls../conf/Catalina/localhostそのファイルやディレクトリはありません。エラーが発生しました。しかし、cd ../conf/Catalina/localhost動作します。

以下を参照してください。

[root@fedora ~]# ll /usr/tomcat*
lrwxrwxrwx. 1 root root 21 Jun 17 15:00 /usr/tomcat6 -> apache-tomcat-6.0.32/
lrwxrwxrwx. 1 root root 21 Jun 17 13:03 /usr/tomcat7 -> apache-tomcat-7.0.16/
[root@fedora ~]# cd /usr/tomcat6
[root@fedora tomcat6]# ll logs
lrwxrwxrwx. 1 root root 16 Jun 17 14:51 logs -> /var/log/tomcat6
[root@fedora tomcat6]# cd logs
[root@fedora logs]# cd ../conf/Catalina/localhost
[root@fedora localhost]# pwd
/usr/tomcat6/conf/Catalina/localhost
[root@fedora localhost]# cd /usr/tomcat6/logs
[root@fedora logs]# ll ../conf/Catalina/localhost
ls: cannot access ../conf/Catalina/localhost: No such file or directory

どうすればこれが起こりますか?これはシンボリックリンクのバグですか、それとも特別な動作ですか?

答え1

これは組み込み関数の特別なbash動作ですcd。ファイル関連の動作は自然な現象です。シンボリックリンクをクリックすると、宛先への実際のパスを入力し、元のパス情報が失われます。ただし、そのパスを使用またはbash移動するzshと、シェルは元のパスを記憶し、cd後続の関連コマンドcdで使用します。ただし、bashファイル名などが必要かどうかは実際にはわからないため、相対ファイル名参照にはありません。

cdの記事を見ると、「論理的」(元のパスを記憶)または「物理的」(ファイルシステムのアイデアを使用)パスを使用するかどうかを示すオプションがあることがbashわかります。-L-P

常に「論理」動作が必要な場合は、--bindシンボリックリンクの代わりにマウント(LinuxではSolarisおよび他のオペレーティングシステムでは「ループバック」または別の名前で呼び出す)を使用する必要があります。

関連情報