পসিক্স শেল স্ট্যান্ডার্ড এই সাইটে বলে
http://pubs.opengroup.org/onlinepubs/9699919799/
শেলগুলি কীভাবে PATHএক্সিকিউটেবলের সন্ধানের জন্য ব্যবহার করে:
"তালিকাটি শুরু থেকে শেষ অবধি অনুসন্ধান করা হবে, নির্দিষ্ট নাম এবং যথাযথ এক্সিকিউশন অনুমতি সহ একটি এক্সিকিউটেবল ফাইল না পাওয়া পর্যন্ত প্রতিটি উপসর্গের সাথে ফাইলের নাম প্রয়োগ করা হবে।"
ঠিক আছে, বাস্তব পসিক্স বাস্তবায়নে এটি কীভাবে এটি প্রদর্শিত হচ্ছে তা নয়:
man which বলেছেন:
"বর্তমান পরিবেশে যে ফাইলগুলি (বা লিঙ্কগুলি) কার্যকর করা হবে তার পাথের নামগুলি ফেরত দেয়, যদি তার যুক্তিগুলি কঠোরভাবে পসিক্স-কনফর্মেন্ট শেল-এ কমান্ড হিসাবে দেওয়া হত It যুক্তিগুলি It এটি প্রতীকী লিঙ্কগুলি অনুসরণ করে না ""
ঠিক আছে, আসুন এই পরিস্থিতিটি দেখুন:
$ pwd
/home/mark
$ echo $PATH
/home/mark/bin:...
$ ls -l bin/foobar
lrwxrwxrwx 1 mark mark 18 Dec 12 22:51 bin/foobar -> /home/mark/foobar1
$ touch foobar1
$ which foobar
$ chmod a+x foobar1
$ which foobar
/home/mark/bin/foobar
ঠিক আছে, এখানে PATHসঠিক নামের সাথে একটি প্রতীকী লিঙ্ক রয়েছে এবং এটি lsসম্পাদনযোগ্য বলে প্রতিবেদন করা হয়েছে।
which এটি মোটেও দেখায় না, তবে এটি কী দেখায় তাতে কেবল আগ্রহী।
এটি উভয়টি man whichস্পষ্টতই বলেছে যে এটি প্রতীকী লিঙ্কগুলি অনুসরণ করে না (এবং প্রকৃতপক্ষে আমরা এটি দেখতে পাই না, কারণ which foobarএটি মুদ্রণ করে না foobar1), এবং উপরে যে পসিক্স শেল ডকুমেন্টেশন উপরে উল্লিখিত হয়েছে তা কখনই PATHঅ্যালগরিদমে নিম্নলিখিত চিহ্নগুলি কখনও উল্লেখ করে না ।
সুতরাং, whichএবং বিদ্যমান শাঁসগুলি ভুল, বা আমি কী ডকুমেন্টেশন বুঝতে পারছি না?
স্পষ্ট করা:
আমি জানি এবং বিদ্যমান আচরণটি ব্যাখ্যা করতে পারি। আমার প্রশ্ন "এটি কীভাবে কাজ করে?" নয়। আমি জানি যে.
আমার প্রশ্নটি ডকুমেন্টেশন সম্পর্কে: আমি যে দস্তাবেজগুলি উদ্ধৃত করেছি তা অনুসরণ করার ক্ষেত্রে আমার ভুল কোথায়। নাকি ডকুমেন্টেশন ভুল?
প্রচার: আমি কেন যত্ন করব?
ঠিক আছে, আমি একজন প্রয়োগকারী। বিভিন্ন প্রয়োগকারীদের বিভিন্ন প্রয়োজনীয়তা থাকে। আমার জন্য, প্রয়োজনটি হ'ল বর্তমান পসিএক্স স্ট্যান্ডার্ডের শব্দটি অবশ্যই অনুসরণ করা উচিত (বা, আরও স্পষ্টভাবে, এটি সর্বোত্তম হতে পারে, কারণ, মানটি নিজেই কিছুটা বগিযুক্ত)। এটি Godশ্বরের শব্দ ছিল যেমন।
এখন, স্ট্যান্ডার্ড শব্দটি বেশ পরিষ্কার - নিম্নলিখিত চিহ্নগুলি উল্লেখ করা হয়নি, যেখানে অন্যান্য অনেক জায়গায় এটি করা উচিত যেখানে এটি উল্লেখ করা হয়েছে। সুতরাং এই ক্ষেত্রে, না।
তবে, আমি সর্বদা ডাবল চেক করি কীভাবে dashএবং কী bashআচরণ করে, তা নিশ্চিত করার জন্য। অবশ্যই, এখানেও একটি সামান্য সমস্যা রয়েছে, dashযদিও এটি পসিক্স হিসাবে বিল করা হয়েছে, পসিক্সের সাথে সামঞ্জস্য সহ প্রচুর ছোট ছোট বাগ রয়েছে। bash, আমি পসিক্সের সাথে এখনও কোনও বাগ খুঁজে পাইনি, কিন্তু ... ব্যাশ আসলে পসিক্স নয়, এটি এর চেয়ে অনেক বেশি।
তাই সেখানে যদি আপনি এটি আছে। এজন্য আমি যত্ন করি।
$PATHকোনও প্রতিলিপি নেই।
lstat(2)), তাদের অনুসরণ করা সাধারণত বলা হয় না। উদাহরণস্বরূপ, open(2)এর আচরণ সম্পর্কে কথা বলার সময় কেবল বর্ণ বর্ণের উল্লেখ রয়েছে O_CREAT | O_EXCL। লক্ষ্য ফাইলটি খোলার কথা বলা দরকার নেই need
$PATHsymlinks থাকতে পারে। ব্যবহার করে দেখুনwhich sh।