'পরীক্ষা' নামের এক্সিকিউটেবল ফাইল $ PATH এ রয়েছে তবে চলবে না


13

আমার কাছে file হোম / বিনে একটি ফাইল রয়েছে (আপনি জিজ্ঞাসার আগে, হ্যাঁ, এটি আমার পথে রয়েছে) testযা আমি নিশ্চিত করেছি যে আমি যখন ফাইলের পুরো পথ দিয়ে চালাচ্ছি তখন তা কার্যকর করা যেতে পারে। যাইহোক, আমি যখন এটি এভাবে চালাই না তখন আমি একটি সত্যই উদ্ভট সমস্যা পাই। যখন আমি কেবল testটার্মিনালে চালাই , এটি কিছু করে না এবং সঙ্গে সঙ্গে ফিরে আসে। আমি জানি যে এটি বেশ কয়েকটি কারণে ফাইলটি সন্ধান করার বিষয় নয়:

  1. কোনও ত্রুটির বার্তা নেই। সাধারণত যদি ফাইলটি খুঁজে পাওয়া যায় না বা কার্যকর করা যায় না তবে একটি বার্তা এমনভাবে মুদ্রিত হবে।

  2. দৌড়ানো which testএখনও সঠিক ফাইলের পথ ফেরায়।

  3. সম্ভবত সবচেয়ে অদ্ভুত - স্ক্রিপ্টটি যখন চালিত হয় ঠিক তখন কাজ করে strace। আমি straceকী চলছে তা বুঝতে পারি কিনা তা দেখার চেষ্টা করেছিলাম কিন্তু যখন আমি এটি চালিয়েছি তখন straceএটি 0 টি সমস্যা নিয়ে প্রত্যাশার মতো কাজ করেছে।



উত্তর:


45

testএটি ব্যবহারের জন্য দুর্ভাগ্যজনক নাম, এটি শর্তসাপেক্ষ পরীক্ষার জন্য স্ট্যান্ডার্ড ইউটিলিটি । (এটা আসলে একই কমান্ড হিসাবে মধ্যে , এটা ঠিক দেখায় একটি সিনট্যাক্স জিনিস ভালো, কিন্তু সত্যিই শুধু একটি স্বাভাবিক কমান্ড।)[if [ ... ]

testউদাহরণস্বরূপ বাশের মধ্যেও অন্তর্নির্মিত, তাই চলমান testকখনও কখনও আপনার বাইনারিটিকে পথ থেকে দেখায় না।

bash$ help test | head
test: test [expr]
    Evaluate conditional expression.

    Exits with a status of 0 (true) or 1 (false) depending on
    the evaluation of EXPR.  Expressions may be unary or binary.  
    [...]

test কোনও যুক্তি ছাড়াই কেবল 1 (মিথ্যা) ফেরত দেয়।

রানিং strace testশেল অন্তর্নির্মিত জড়িত না, যেহেতু straceকোনও ইউটিলিটি নিজেই প্রয়োগ করে না। এটি এটি আপনার যা সন্ধান করে তা ব্যবহার করে PATH। নোট আপনি সম্ভবত মান আছে testমধ্যে /bin/testবা /usr/bin/testযাতে যদি প্রথম হতে হবে, PATH, straceযে দৌড়াতে দৌড়াতে হবে।

আমার বাশে, whichএটিও একটি বাহ্যিক কমান্ড, সুতরাং এটি বিল্টিনগুলি সম্পর্কে কোনও ধারণা রাখে না। অন্যদিকে, কমান্ড শেল builtin, এবং যে দেখাতে হবে ।typetype testtest is a shell builtin

আরও দেখুন: কেন "কোন" ব্যবহার করবেন না? তাহলে কী ব্যবহার করবেন?


আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.