POSIX গ্যারান্টি দেয় যে স্ট্যান্ডার্ড ইউটিলিটিগুলি PATH এ রয়েছে?


11

ইন "কমান্ড অনুসন্ধান এবং এক্সিকিউশন" বিভাগে , POSIX স্পেসিফিকেশন বলছেন যে PATHযখন চালানো একটি ইউটিলিটি (কিছু ব্যাতিক্রম আছে) খোঁজার অনুসন্ধান করা হয়। স্পেসিফিকেশনটি কোথাও উল্লেখ করেছে যা PATHএমন মানের সাথে আরম্ভ করা হবে যা গ্যারান্টি দেয় যে সমস্ত স্ট্যান্ডার্ড ইউটিলিটিগুলি পাওয়া যাবে?

বা স্ট্যান্ডার্ড ইউটিলিটি চালানোর চেষ্টা করার সময় আমি কখনই "কমান্ড খুঁজে পাইনি" ত্রুটিটি পাব না তার গ্যারান্টি দেওয়ার জন্য আমাকে নীচের মতো কিছু করার দরকার আছে?

PATH=$(command -p sh -c 'printf %s "${PATH}"')

( ইউটিলিটির POSIX নির্দিষ্টকরণcommand দেখুন )

উত্তর:


13

হ্যা এবং না. পসিক্স পরিবেশে, ইউটিলিটিগুলি অবশ্যই স্পেসিফিকেশন দ্বারা বর্ণিত হিসাবে আচরণ করবে। অনুশীলনে, এর অর্থ এই যে ইউটিলিটির সংস্করণ সংস্করণগুলিতে অবশ্যই উপস্থিত থাকতে হবে $PATH। যাইহোক, আপনার প্রোগ্রামটি কোনও পসিক্স-কমপ্লায়েন্ট সিস্টেমে চলাকালীন, আপনি এটি অ-সঙ্গতিপূর্ণ পরিবেশে চালাচ্ছেন। অনুশীলনে, প্রায়শই যা ঘটে তা হ'ল ওএসের একটি লেগ্যাসি মোড এবং একটি পসিক্স মোড থাকে এবং এটি ডিফল্টরূপে উত্তরাধিকার মোডে থাকে। কিছু কমান্ড অনুপস্থিত হওয়ার চেয়ে খারাপ, লিগ্যাসি মোডের মধ্যে বিভিন্ন অসুবিধাগুলি যেমন বিভিন্ন অর্থ সহ বিকল্প রয়েছে to

আপনি একটি ভাল উদ্ধার করতে পারেন PATHসঙ্গে getconf। অবশ্যই এটি মুশকিল, getconfমূল হিসাবে সঠিকটি $PATHনাও হতে পারে। আদেশের জন্য অ্যাপ্লিকেশন ব্যবহার এটি করার একটি উপায় দেখায়:

command -p getconf PATH

আমি স্পেসিফিকেশনটি যতটা বুঝতে পেরেছি, আপনি যদি পসিক্স-কনফর্মিং পরিবেশে আপনার প্রোগ্রামটি চালাচ্ছেন তবে এটি প্রয়োজনীয় নয়; এবং যদি আপনি কোনও পসিক্স-কনফর্মিং পরিবেশে আপনার প্রোগ্রামটি চালাচ্ছেন না, পসিক্স প্রযোজ্য নয়। তবে, এই অ্যাপ্লিকেশনটির ব্যবহারটি একটি সুপারিশ হিসাবে নেওয়া যেতে পারে: এটি যদি কাজ না করে তবে আপনি আপনার বিক্রেতার কাছে অভিযোগের অধিকারী বোধ করতে পারেন যে তারা পসিক্স স্পেকের চিঠিটি সম্পর্কে যা কিছু করছে, তারা এর স্পিরিটি মেনে চলে না।


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