Katakan saya melakukan yang berikut:
cd /some/path
ln -s /target/path symbolic_name
Jika kemudian lakukan:
cd /some/path
cd symbolic_name
pwd
Saya mendapat:
/some/path/symblic_name
dan tidak:
/target/path
Apakah ada cara untuk membuat shell "sepenuhnya menyelesaikan" tautan simbolik (yaitu memperbarui CWD, dll.), Seolah-olah saya telah melakukan secara langsung:
cd /target/path
?
Saya perlu menjalankan beberapa program yang tampaknya "sadar" atau "sensitif" tentang bagaimana saya sampai ke jalur target saya, dan saya ingin mereka berpikir bahwa saya tiba di jalur target seolah-olah telah dilakukan cd /target/path
secara langsung.
pwd -P
ataualias pwd='pwd -P'
jugacd -P
pergi ke jalur fisik alih-alih symlink.Jawaban:
Shell Anda memiliki builtin
pwd
, yang mencoba menjadi "pintar". Setelah Anda melakukancd
symlink, internalpwd
memalsukan output seolah-olah Anda pindah ke direktori nyata.Lewati
-P
opsipwd
, yaitu jalankanpwd -P
. The-P
pilihan (untuk “fisik”) mengatakanpwd
untuk tidak melakukan pelacakan link simbolik dan menampilkan “nyata” path ke direktori.Atau, harus ada biner nyata
pwd
, yang tidak melakukan (dan bahkan tidak dapat melakukan) sihir semacam ini. Cukup gunakan kejelasan biner itu:sumber
Coba
cd -P <symlink_dirname>
.Anda juga dapat menggunakan
set -o physical
untuk membuat perilaku ini bertahan selama masa pakai shell yang sedang berjalan.Lihat https://stackoverflow.com/questions/10456784/behavior-of-cd-bash-on-symbolic-links untuk info lebih lanjut.
sumber