readlink -fakan :
mengkanoniskan jalur dengan mengikuti setiap symlink di setiap komponen nama yang diberikan secara rekursif; semua kecuali komponen terakhir harus ada
whichakan mencari :
untuk skrip yang dapat dieksekusi atau di direktori yang tercantum dalam variabel lingkungan PATH menggunakan algoritma yang sama dengan bash (1)
whichtidak peduli apakah yang ditemukannya adalah symlink atau tidak: hanya saja itu dapat dieksekusi. Ini menjamin bahwa jalur yang dicetaknya akan selalu berada di dalam salah satu direktori di PATH.
Di sistem Anda, /usr/bin/javaadalah symlink ke /usr/lib/jvm/java-1.6.0-openjdk-1.6.0.0.x86_64/jre/bin/java. Ketika Anda menggabungkan dua perintah bersama-sama seperti ini, Anda mengganti output whichke dalam baris perintah readlink -funtuk membuat:
readlink -f /usr/bin/java
Yaitu, whichtelah menemukan tempat file executable pertama yang dipanggil javaada di Anda PATH, dan shell telah memasukkan path itu sebagai argumen readlink -f. readlinkkemudian mencari jalan dan menemukan bahwa itu adalah tautan simbolik , dan itu memutuskan tautan itu (dan yang lainnya menemukan) untuk menghasilkan jalur langsung lengkap ke file itu sendiri.
Untuk hampir semua tujuan, jalur ini akan dapat dipertukarkan dengan Anda - symlink javaakan secara otomatis diselesaikan ke jalur nyata ketika Anda menggunakannya, dan modifikasi pada file itu sendiri akan dibuat oleh manajer paket Anda, bukan Anda, sehingga Anda tidak pernah memiliki untuk melihatnya. Anda bisa menjalankan program dari kedua jalur, atau hanya dengan java, dan hasilnya akan persis sama, karena itu adalah executable aktual yang sama yang berjalan pada akhirnya.
Manajer paket akan menggunakan symlink daripada meletakkan file yang sebenarnya di dalam /usr/binkarena JRE memiliki seluruh set file yang suka memiliki di sebelah satu sama lain dalam konfigurasi yang tidak biasa, dan symlink memungkinkan manajer paket menyajikan pengaturan yang tampak normal untuk Anda sebagai pengguna. Akan ada banyak file lain di dalamnya /usr/lib/jvm/java-1.6.0-openjdk-1.6.0.0.x86_64yang Anda tidak akan pernah punya alasan untuk berurusan, dan yang tidak berpartisipasi dalam pengaturan perpustakaan biasa sistem.