Symlink üzerinden cd yaptığımda, pwd neden gerçek yol yerine symlink'i gösteriyor?


19

ln -s 1 2Dizin içindeki bir dizine bir yumuşak bağlantı ( ) oluşturdum ve yumuşak bağlantıyı ( ) testaçtım cd 2ve geçerli yolu kullanarak görüntüledim pwd. Görüntülenen yol vardı ~/test/2ve değil ~/test/1.

Windows gibi bir işletim sisteminde farklıdır, kısayol bizi gerçek dizine getirir. Bu yumuşak bağlantının Linux'ta nasıl çalıştığı konusunda biraz kafam karıştı. İçinde olduğu gibi bir kısayol değil Windowsmi? Yol neden olmasın ~/test/1?

 $ mkdir test
 $ cd test
 $ mkdir 1
 $ ln -s 1 2
 $ cd 2
 $ pwd
 /home/dazz/test/2

2
Ekran görüntüsünü kaldırdığınız için teşekkür ederiz. Bir dahaki sefere, lütfen silmek ve yeniden göndermek yerine sorunuzu düzenleyin . Kendi sorularınızın çoğunu silmek size sormanızı yasaklayabilir. Bu yasak otomatiktir, bu yüzden çok fazla şey yapamayacağız. Her durumda, düzenleme sorunu ön plana çıkardığı için yeniden göndermenize gerek yoktur .
terdon

Neden iki kez soruyorsun? askubuntu.com/q/610133/367165
AB

AB aynı forum mu?
DScript

Yanıtlar:


18

Kabuğun, bulunduğunuz yere nasıl geldiğinizi hatırlayan bir özelliği.
Eğer varsa realpathyüklü Yapabileceğiniz:

$ realpath 
/home/dazz/test/1

Python'unuz varsa:

$ python -c "import os; print(os.path.realpath('.'))"
/home/dazz/test/1

veya readlink (coreutils'ten):

$ readlink -f .
/home/dazz/test/1

veya /bin/pwd(yerleşik kabuk değil pwd):

$ /bin/pwd
/home/dazz/test/1

ls -l /proc/$$/cwdçekirdeğin /procdosya sistemi arayüzünden yararlanır.
Bruce Ediger

8
pwd -PGeçerli dizinin mantıksal yerine fiziksel yolunu yazdırmayı da unutmayın .
godlygeek

8

Kontrast pwdve /bin/pwd.

pwd, birçok kabukta yerleşik bir komut olan, kabuğunuzun nerede olduğunuzu düşündüğünü söyler (ve böylece sembolik bağlantılara "yumuşak bağlantılar" gerçek dizinmiş gibi davranır.

/bin/pwd, gerekirse dosya sistemi ağacını yukarı doğru hareket ettirerek gerçekte nerede olduğunuzu söyleyen harici bir programdır /. Sembolik bağlantıları hesaba katmaz çünkü bunlar yukarı doğru ilerlerken mevcut değildir..


6

Diğer cevaplar /bin/pwdkabuklara karşı builtin pwd.

Belirttiğiniz Windows stilindeki sembol bağlantılarını takip etmek istiyorsanız, şunu kullanın cd -P: PWD değişkenini buna göre değiştirecektir.

Kullanmak isterseniz -Pvarsayılan olarak aşağıdaki konularda bu satırı ekleyebilirsiniz .bashrcveya .zshrc:

set -P

Diğer mermiler değişebilir.

Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.