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