ls ..はシンボリックリンクでは正しく機能しません。

ls ..はシンボリックリンクでは正しく機能しません。

私のディレクトリ設定は次のとおりです

~/code
~/code/src
~/code/build -> /path/to/somewhere/else

最後はシンボリックリンクです。

もし私がするなら

cd ~/code/build
ls ..

それからリストを得た/path/to/somewhereが、その他の備考そして私の経験に照らして見ると、リストを見たいです~/code。以前はその逆だったと誓います。

私はUbuntuでzshとbashを使っています。そのような設定はありますか、それともPOSIXのようなものに深く含まれていますか?

答え1

問題ではありませんls。これがシンボリックリンクがどのように機能するかです。現在のディレクトリの親ディレクトリに移動しますが、..シンボリックリンクを介して到達したかどうかは不明です。この動作を防ぐには、シェルが介入する必要があります。シェルの組み込み機能を呼び出すだけでなく、ディレクトリ全体のパスを覚えて欲しいものを見つけるための特別なcd処理方法があります。しかし、組み込まれていません。期待する結果を得るには、シェルを渡す前に別のパスに変更する必要があります。オプションが役に立ちます。chdirls..lszshCHASE_DOTS

通常、ディレクトリへのシンボリックリンクは汚れています。重要で半永久的なアプリケーションの場合を使用してくださいmount --bind

答え2

私はタグで質問にタグを付けたので、zshシェルについて話しているとします。

oh-my-zsh変数およびCHASE_LINKS/またはCHASE_DOTS。実行を確認し、setopt | grep -i chaseリストにあることを確認してください。その場合は設定を解除してください。

unsetopt CHASE_DOTS
unsetopt CHASE_LINKS

関連情報