シンボリックリンクと相対パスの奇妙なポイント

シンボリックリンクと相対パスの奇妙なポイント

誰かが私にこれを説明できますか?どのように設定され、なぜこれが動作するのか理解できません。

zshどこか見たい実際に私が使用しているコンピュータにインストールされました。だから私は通常lsシンボリックリンクが指す場所を探します。

$ ls -l /bin/zsh
lrwxrwxrwx   1 root     root          14 Dec  1  2011 /bin/zsh -> ../sfw/bin/zsh*

これを見たとき、私は「いいですね、シンボリックリンクは相対パスを使用します。あまりない」と思いました。

しかし、私がcd自分でやろうとするとしなければならない相対パスが指す位置は次のとおりです。

$ cd /bin/sfw/bin
cd: no such file or directory: /bin/sfw/bin

しかし、私が具体的に入力した場合これ

$ cd ../sfw/bin

作業ディレクトリはいつ/bin動作しますか?それから私はまたこれを得ました:

$ pwd
/usr/sfw/bin

ここで何が起こっているのでしょうか?

答え1

/bin/usr/binそれはおそらくシステムのシンボリックリンクです。これが本当なら:

/bin/../sfw/bin/zsh

実は同じ

/usr/bin/../sfw/bin/zsh

これは次のように減少します。

/usr/sfw/bin/zsh

zsh実際の住居はここだ。あなたが試したことは

/bin/sfw/bin

システムに実際に表示されるパスと一致しません。../sfw/bin/zsh相対パス()の基礎を形成する絶対パスが与えられたら、相対パス()を解析する正しい方法は、それらを+→/binで連結することです。/bin/../sfw/bin/zsh/bin/../sfw/bin/zsh

関連情報