readlink -fহবে :
প্রদত্ত নামের প্রতিটি উপাদানগুলিতে প্রতিটি সিমিলিংকে পুনরাবৃত্তভাবে অনুসরণ করে একটি পাথকে ক্যানোনিকালাইজ করা; সবশেষে শেষ উপাদান থাকা আবশ্যক
whichঅনুসন্ধান করবে :
ব্যাশ (1) হিসাবে একই অ্যালগরিদম ব্যবহার করে পরিবেশ পরিবর্তনশীল PATH তালিকাভুক্ত ডিরেক্টরিতে এক্সিকিউটেবল বা স্ক্রিপ্টের জন্য
whichএটি যা সন্ধান করে তা সিমিলিংক কিনা তা বিবেচনা করে না: কেবলমাত্র এটি কার্যকর হয়। এটি গ্যারান্টি দেয় যে এটি প্রিন্ট করে যে পথটি সর্বদা এর মধ্যে ডিরেক্টরিগুলির মধ্যে একটির মধ্যে থাকবে PATH।
আপনার সিস্টেমে অন, /usr/bin/javaএকটি হল সিমবলিক লিঙ্ক থেকে /usr/lib/jvm/java-1.6.0-openjdk-1.6.0.0.x86_64/jre/bin/java। আপনি যখন এই দুটি কমান্ড একসাথে মিশ্রিত করেন আপনি আউটপুটটি তৈরির কমান্ড লাইনে স্থান পরিবর্তন করেন :whichreadlink -f
readlink -f /usr/bin/java
এটি, whichখুঁজে পেয়েছে যেখানে প্রথম নির্বাহযোগ্য ফাইলটি javaআপনার মধ্যে রয়েছে PATHএবং শেলটি সেই আর্গুমেন্ট হিসাবে প্রবেশ করিয়েছে readlink -f। readlinkতারপরে পাথটি অনুসন্ধান করে এটি দেখতে পাওয়া যায় যে এটি একটি প্রতীকী লিঙ্ক , এবং তাই এটি সেই লিঙ্কটি (এবং অন্য যে কোনও এটি সন্ধান করে) প্রকৃত ফাইলের নিজস্ব সরাসরি প্রত্যক্ষ পথ তৈরির সমাধান করে।
প্রায় সমস্ত উদ্দেশ্যে, এই পাথগুলি আপনার জন্য বিনিময়যোগ্য হবে - আপনি javaযখন এটি ব্যবহার করবেন তখন সিমলিংকটি স্বয়ংক্রিয়ভাবে আসল পাথের সাথে সমাধান হয়ে যাবে, এবং ফাইলের মধ্যে পরিবর্তনগুলি আপনার প্যাকেজ ম্যানেজার নিজেই করে দেবে, সুতরাং আপনার কখনই নেই এটি দেখতে। আপনি প্রোগ্রামটি যে কোনও একটি পথ থেকে বা ন্যায়বিচারের সাথে চালাতে পারবেন javaএবং ফলাফলটি হুবহু একই রকম হবে, কারণ এটি একই প্রকৃত নির্বাহযোগ্য যা শেষ পর্যন্ত চলে।
প্যাকেজ ম্যানেজার প্রকৃত ফাইলটি ভিতরে রাখার পরিবর্তে একটি সিমিলিংক ব্যবহার করবে /usr/binকারণ জেআরই এর অসাধারণ কনফিগারেশনে একে অপরের পাশে থাকতে পছন্দ করে এমন একটি ফাইলের পুরো সেট রয়েছে এবং একটি সিমলিংক প্যাকেজ ম্যানেজারকে একটি সাধারণ-দর্শনীয় বিন্যাস উপস্থাপন করতে দেয় আপনি ব্যবহারকারী হিসাবে এর মধ্যে আরও অনেকগুলি ফাইল /usr/lib/jvm/java-1.6.0-openjdk-1.6.0.0.x86_64থাকবে যা আপনার সাথে ডিল করার কোনও কারণ নেই এবং এটি সিস্টেমের সাধারণ গ্রন্থাগার ব্যবস্থাতে অংশ নেয় না।