"কমান্ড খুঁজে পাওয়া যায়নি" এবং "এই জাতীয় কোনও ফাইল বা ডিরেক্টরি নেই" এর মধ্যে পার্থক্য?


33

উদাহরণ স্বরূপ:

$ node
-bash: /usr/local/bin/node: No such file or directory
$ foo
-bash: foo: command not found

পার্থক্য কি? উভয় ক্ষেত্রেই, nodeএবং fooঅবৈধ আদেশ রয়েছে, তবে ইউনিক্সের মতো nodeবাইনারিটি খুঁজে পাচ্ছে না বলে মনে হচ্ছে ? কোনও প্রোগ্রাম আনইনস্টল করার সময়, যেমন node, এটি পরিষ্কার করার কোনও উপায় আছে যাতে আমি পাই

$ node
-bash: node: command not found

সম্পাদনা করুন:

typeআদেশ থেকে ফলাফল :

$ type node
node is hashed (/usr/local/bin/node)
$ type foo
-bash: type: foo: not found

আপনি উভয় type nodeএবং আউটপুট সঙ্গে আপনার প্রশ্ন আপডেট করতে পারেন type foo(যদিও সম্ভবত প্রথম প্রথম সত্যিই সহায়ক)।
এরিক রেনৌফ

@ এরিকরেনুফ, ঠিক আছে, আমি করেছি।
gwg

2
সম্ভবত 'নোড' / / usr / বিন / নোড -> / usr / স্থানীয় / বিন / নোডের একটি প্রতীকী লিঙ্ক এবং পরবর্তীটি উপলভ্য নয় তাই ত্রুটিটি প্রমাণিত হয় যা / usr / স্থানীয় / বিন / নোড মুছে ফেলা হয়েছিল প্রতীকী লিঙ্কটি তৈরি হওয়ার পরে।
পছন্দ

উত্তর:


59

কারণ bashআপনার কমান্ডের অবস্থানটি মনে আছে, এটি একটি হ্যাশ টেবিলের মধ্যে সঞ্চয় করুন ।

আপনি আনইনস্টল করার পরে node, হ্যাশ টেবিলটি সাফ করা হয়নি, bashতবুও ভাবেন যে nodeএটি রয়েছে /usr/local/bin/node, লুকিং লুকিয়ে আছে PATHএবং /usr/local/bin/nodeসরাসরি কল করছে , ব্যবহার করছে execve()। যেহেতু nodeআর নেই, যেহেতু ত্রুটি execve()ফিরে আসে তার ENOENTঅর্থ এই জাতীয় কোনও ফাইল বা ডিরেক্টরি নেই, bashআপনাকে সেই ত্রুটিটি রিপোর্ট করেছিল।

ইন bash, আপনি হ্যাশ টেবিল থেকে একটি এন্ট্রি সরাতে পারেন:

hash -d node

বা পুরো হ্যাশ টেবিলটি সরিয়ে ফেলুন ( সমস্ত পসিক্স শেলটিতে কাজ করে ):

hash -r

2
মনে রাখবেন যে এটি /usr/local/bin/nodeঅনুপস্থিত হতে হবে না; যদি সেই ফাইলটি একটি গতিযুক্তভাবে সংযুক্ত এক্সিকিউটেবল হয়, এবং নির্ভরতাগুলির মধ্যে একটি অনুপস্থিত থাকে তবে আপনি একই "এই জাতীয় কোনও ফাইল বা ডিরেক্টরি নেই" বার্তা পাবেন। আপনি lddসেই ফাইলটিতে চেষ্টা না করা পর্যন্ত এটি আপনাকে পাগল করে তুলতে পারে।
গুন্ট্রাম ব্লহম

@ গুট্রামব্লহম তবে কিছু লিনাক্সের ডিস্ট্রো বাশকে আরও বোধগম্য ত্রুটি বার্তাগুলি মুদ্রণের জন্য প্যাচ করা হয়েছে, যেমন progname: error while loading shared libraries: badLib.so.1: cannot open shared object file: No such file or directory(বা এটি সম্ভবত এই ক্ষেত্রে সম্ভবত বাশ নাও হতে পারে ld-linux.so)।
রুসলান

@ রুসালান আমার অভিজ্ঞতায় আপনি "শেয়ার্ড লাইব্রেরিগুলি লোড করার সময় ত্রুটি" পেয়ে থাকেন যদি এটি একটি "সাধারণ" শেয়ার্ড লাইব্রেরিটি অনুপস্থিত থাকে এবং অবর্ণনীয় "এ জাতীয় কোনও ফাইল বা ডিরেক্টরি নেই" যদি এটি গতিশীল লিঙ্কার নিজেই অনুপস্থিত থাকে। যখন আপনি বুঝতে পারি যে সাবেক কেস সনাক্ত করা হলে এই জ্ঞান করে তোলে দ্বারা , ডায়নামিক linker যেহেতু পরেরটির ক্ষেত্রে কার্নেল দ্বারা সনাক্ত করা হয়, এবং এটি একটি সহায়ক বার্তা প্রিন্ট করতে গতিশীল linker জন্য অনেক সহজ ( execveব্যর্থতা উপর একটি পার্শ্ব প্রতিক্রিয়া হিসেবে stderr লিখিতভাবে সম্ভবত
পসিক্স

@ জেওল আহ, ঠিক আছে, এটাই কিছু ডিস্ট্রোস (উদাঃ সেন্টোস) প্যাচ ব্যাশের জন্য। এই জাতীয় প্যাচ করা সংস্করণ এর পরে ত্রুটিগুলি মুদ্রণ করে /lib/ld-linux.so.2: bad ELF interpreter: No such file or directory
রুসলান

-6

আমি উবুন্টু লিনাক্স ১ 16.০৪-তে পেয়েছি যে "এরকম কোনও ফাইল বা ডিরেক্টরি নেই" এর অর্থ আপনাকে "বর্তমান কমান্ড পাওয়া যায়নি" এমন সময় আপনার বর্তমান কার্যনির্বাহী ডিরেক্টরিটি স্যুইচ করতে হবে অর্থাত্ সমস্যা সমাধানের জন্য আপনাকে অ্যাপ-ইনস্টল xxxyyy_zzz ব্যবহার করতে হবে।


10
যদি আপনার সিডব্লিউডির কোন প্রভাব পাওয়া যায় বা না পাওয়া যায় (আপনি যদি এটি। / এর সাথে উপস্থাপন না করেন) তবে আপনার প্যাথটি বরং অনিরাপদভাবে সেট আপ করা হয়েছে। এবং একটি আদেশ পাওয়া
যাচ্ছিল
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.