readlink -fбуде :
канонізувати шлях, слідуючи за кожним символьним посиланням у кожному компоненті даної назви рекурсивно; всі, крім останнього компонента, повинні існувати
whichбуде шукати :
для виконуваного файлу або сценарію в каталогах, перелічених у змінній середовища PATH, використовуючи той же алгоритм, що і bash (1)
whichНеважливо, знайдене це символьне посилання чи ні: лише те, що воно виконується. Це гарантує, що шлях, який він надрукує, завжди знаходитиметься в одному з каталогів PATH.
У вашій системі /usr/bin/javaє символьним посиланням на /usr/lib/jvm/java-1.6.0-openjdk-1.6.0.0.x86_64/jre/bin/java. Коли ви комбінуєте дві команди разом так, ви підміняєте вихід whichу командний рядок readlink -fдля створення:
readlink -f /usr/bin/java
Тобто, whichзнайшов, де javaу вашому першому викликаному файлі є виклик PATH, і оболонка вставила цей шлях як аргумент readlink -f. readlinkпотім шукає шлях і виявляє, що це символічне посилання , і тому він вирішує це посилання (і будь-які інші, які він знаходить), щоб створити повний прямий шлях до самого фактичного файлу.
Майже в усіх цілях ці шляхи будуть для вас взаємозамінними - символьне посилання javaавтоматично буде вирішено до реального шляху, коли ви його використовуєте, а зміни до самого файлу будуть зроблені менеджером пакунків, а не ви, тому у вас ніколи не буде щоб побачити це. Ви можете запустити програму з будь-якого контуру, або з просто java, і результат був би абсолютно однаковий, тому що це той самий фактичний виконуваний файл, який працює в кінці кінців.
Менеджер пакунків буде використовувати символьне посилання, а не ставити фактичний файл всередину, /usr/binтому що в JRE є цілий набір файлів, які він любить мати поруч один з одним у незвичних конфігураціях, а символьна посилання дозволяє менеджеру пакунків представляти звичайний вигляд розташування ви як користувач. Всередині буде багато інших файлів, з /usr/lib/jvm/java-1.6.0-openjdk-1.6.0.0.x86_64якими ви ніколи не матимете жодних підстав мати справу, і які не беруть участі у звичайних бібліотечних системах системи.