Saya memiliki kekacauan instalasi python kusut di laptop saya. Saya sedang melihat executable /usr/local/bin
dan mereka semua adalah tautan simbolik ke../../../Library......
Ada beberapa perilaku aneh di sekitar ini. Jika saya lakukan, ls -lhaG
saya melihat --->
dan jalur relatif ke kanan symlink:
lrwxr-xr-x 1 root wheel 69B Dec 7 22:29 python3 -> ../../../Library/Frameworks/Python.framework/Versions/3.1/bin/python3
Namun, sepertinya saya tidak bisa mendapatkan alat baris perintah untuk menyelesaikan jalur itu dan menampilkan jalur sebenarnya ke python3. Saya telah menemukan beberapa informasi penting di sana-sini mengenai penggunaan pwd -P
dan find
utilitas untuk melakukan ini. Masalahnya adalah bahwa ini sepertinya tidak berfungsi pada OS X seperti yang orang-orang gambarkan mereka bekerja di linux (yaitu mengeluarkan path lengkap ke link simbolik). Mereka hanya mencetak jalur tautan simbolik untuk saya:
FantasticMrFox:bin robert$ pwd -P python3
/usr/local/bin
FantasticMrFox:bin robert$ find `pwd -P` -name python3
/usr/local/bin/python3
Ada ide tentang apa yang terjadi di sini?
../..
.Ini menyelesaikan secara rekursif dan mengembalikan jalur absolut:
Atau versi non-interaktif:
sumber
$ python -c "import os; print os.path.realpath('bin')"
>>/Users/jason/Applications
. Saya symlink ~ / bin to ~ / Applications agar memiliki .bash_profile / $ PATH terpadu di seluruh sistem Mac dan * nix.pwd
danfind
perintah yang saya bicarakan dalam pertanyaan menyelesaikan path lengkap pada sistem selain OS X. Namun saya belum mengujinya.Mungkin diskusi tentang Stack Overflow ini membantu: Cara mengatasi tautan simbolik dalam skrip shell Secara khusus, harap pertimbangkan jawaban ini .
sumber
GNU coreutils-8.15 menambahkan pada tahun 2012 alat baris perintah baru
realpath
yang melakukan apa yang Anda inginkan: ia menyelesaikan rantai tautan simbolik dan menampilkan hasilnya sebagai jalur absolut (default) atau relatif.Apple tidak belum termasuk
realpath
di MacOS (mereka tampaknya sedih untuk menghindari semua alat GPLv3), tetapi Anda dapat dengan mudah menginstal sendiri, misalnya dengan menggunakan Homebrew:brew install coreutils
.sumber
Anda bisa menggunakan
readlink -f
. Itu berulang melalui semua tautan. Misalkan tautan menuju jalur yang lebih jauh dari tautan. Anda ingin memiliki jalur absolut terakhir.sumber
read link -f python3
misalnya, dan itu akan buffer link simbolis penuh untuk Anda.-f
tidak pernah ada di OS X versi readlink.