/ Usr / বিন / জাভা থেকে জাভা অবস্থান


20

আমি আমার লিনাক্স সিস্টেমের মধ্যে আমার জাভা অবস্থানটি অনুসন্ধান করার চেষ্টা করছি এবং এটি পেয়েছি

[980@b449 ~]$ which java
/usr/bin/java


[980@b449 ~]$ readlink -f $(which java)
/usr/lib/jvm/java-1.6.0-openjdk-1.6.0.0.x86_64/jre/bin/java

2 কমান্ডের মধ্যে পার্থক্য কি?

উত্তর:


21

কোন 2 আদেশ? /usr/bin/javaএটি একটি নরম (প্রতীকী) লিঙ্ক যা /usr/lib/jvm/java-1.6.0-openjdk-1.6.0.0.x86_64/jre/bin/java
তারা একই ফাইল হওয়ায় কোনও পার্থক্য নেই।
আপনি যদি কিছু টাইপ করুন

ls -l /usr/bin/java

আপনি যেমন একটি ফলাফল পেতে পারেন:

lrwxrwxrwx. 1 root root 22 Aug  5 17:01 /usr/bin/java -> /etc/alternatives/java

যার অর্থ হ'ল আপনার সিস্টেমে বেশ কয়েকটি জাভা সংস্করণ থাকতে পারে এবং ডিফল্টটি পরিবর্তনের জন্য বিকল্পগুলি ব্যবহার করতে পারেন। অন্যথায় আপনি ম্যানুয়ালি ডিফল্টটিকে পরিবর্তনের জন্য লিঙ্কগুলি যুক্ত করতে এবং সরাতে পারেন।

প্রতীকী লিঙ্কগুলি তৈরি করতে কমান্ডটি ব্যবহার করুন

ln -s /usr/lib/jvm/java-1.6.0-openjdk-1.6.0.0.x86_64/jre/bin/java /usr/bin/java

বা সাধারণ আকারে

ln -s <original file> <link to file>

এবং rmলিঙ্কটি মুছে ফেলতে ব্যবহার করুন কারণ আপনি অন্য কোনও ফাইল মুছবেন।


5

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 -freadlinkতারপরে পাথটি অনুসন্ধান করে এটি দেখতে পাওয়া যায় যে এটি একটি প্রতীকী লিঙ্ক , এবং তাই এটি সেই লিঙ্কটি (এবং অন্য যে কোনও এটি সন্ধান করে) প্রকৃত ফাইলের নিজস্ব সরাসরি প্রত্যক্ষ পথ তৈরির সমাধান করে।

প্রায় সমস্ত উদ্দেশ্যে, এই পাথগুলি আপনার জন্য বিনিময়যোগ্য হবে - আপনি javaযখন এটি ব্যবহার করবেন তখন সিমলিংকটি স্বয়ংক্রিয়ভাবে আসল পাথের সাথে সমাধান হয়ে যাবে, এবং ফাইলের মধ্যে পরিবর্তনগুলি আপনার প্যাকেজ ম্যানেজার নিজেই করে দেবে, সুতরাং আপনার কখনই নেই এটি দেখতে। আপনি প্রোগ্রামটি যে কোনও একটি পথ থেকে বা ন্যায়বিচারের সাথে চালাতে পারবেন javaএবং ফলাফলটি হুবহু একই রকম হবে, কারণ এটি একই প্রকৃত নির্বাহযোগ্য যা শেষ পর্যন্ত চলে।

প্যাকেজ ম্যানেজার প্রকৃত ফাইলটি ভিতরে রাখার পরিবর্তে একটি সিমিলিংক ব্যবহার করবে /usr/binকারণ জেআরই এর অসাধারণ কনফিগারেশনে একে অপরের পাশে থাকতে পছন্দ করে এমন একটি ফাইলের পুরো সেট রয়েছে এবং একটি সিমলিংক প্যাকেজ ম্যানেজারকে একটি সাধারণ-দর্শনীয় বিন্যাস উপস্থাপন করতে দেয় আপনি ব্যবহারকারী হিসাবে এর মধ্যে আরও অনেকগুলি ফাইল /usr/lib/jvm/java-1.6.0-openjdk-1.6.0.0.x86_64থাকবে যা আপনার সাথে ডিল করার কোনও কারণ নেই এবং এটি সিস্টেমের সাধারণ গ্রন্থাগার ব্যবস্থাতে অংশ নেয় না।


0

এই একক লাইন কমান্ড:

which java | xargs readlink -f

আপনার জন্য কাজ করবে।

  • which java আপনাকে দেয় যেমন: /usr/bin/java
  • readlink -fসমস্ত প্রতীকী লিঙ্কগুলি /usr/bin/java-> /etc/alternatives/java-> এর মধ্যে দিয়ে যায় /usr/lib/jvm/java-8-oracle/jre/bin/javaএবং শেষটি ফিরে আসে।
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.