আমি কীভাবে কোনও ksh স্ক্রিপ্টের মধ্যে থেকে নিরাপদে ksh এর সংস্করণ পেতে পারি ?
আমি নিম্নলিখিত সমাধানগুলি দেখেছি :
ksh --version
echo ${.sh.version}
echo $KSH_VERSION
এবং সঠিক পরিস্থিতিতে দেওয়া, এই প্রতিটি সঠিকভাবে কাজ করে। তবে আমি অ-নিখুঁত ক্ষেত্রে যত্নশীল care
বিশেষত, আমি বেশ কয়েকটি মেশিন নিয়ে কাজ করি যার সাথে ksh এর পুরানো সংস্করণ রয়েছে যা আমার উদ্দেশ্যে, কার্যকরীতার সাথে মারাত্মকভাবে অভাব রয়েছে। যাইহোক, আমি যে সংস্করণটি (প্রোগ্রামগতভাবে) পরীক্ষা করতে চাইছি তা হল ksh সংস্করণটি কম সক্ষম সংস্করণগুলির মধ্যে একটি কিনা; এবং যদি তা হয় তবে আমি কম দুর্দান্ত কোড সহ একটি শাখা চালিত করতে চাই।
যাইহোক, সমস্যাযুক্ত মেশিনে, শেলের অদক্ষতা সংস্করণটি পরীক্ষা করার ক্ষেত্রে প্রসারিত হয় ...
- যদি আমি চেষ্টা করি তবে
ksh --version
এটি কিছুই মুদ্রণ করে না এবং এর নতুন উদাহরণটি খোলেksh
! যদি আমি চেষ্টা
echo ${.sh.version}
,ksh
একটি বাক্য গঠন ত্রুটি যে সঙ্গে বাতিল করা যাবে না হিসাবে এই একইরূপে2> /dev/null
।$ echo ${.sh.version} 2> /dev/null ksh: ${.sh.version}: bad substitution
অবশ্যই
echo $KSH_VERSION
ঠিকঠাক কাজ করে বলে মনে হচ্ছে - এর অর্থ এটি ক্রাশ হবে না - যদিও এই মেশিনগুলিতে এটি ফাঁকা। এছাড়াও, আমি কোথাও দেখেছি যাKSH_VERSION
কেবলমাত্র দ্বারা সেট করা আছেpdksh
।
প্রশ্নাবলী:
- আমি কীভাবে
ksh
প্রোগ্রামের ভার্সনটি নিরাপদে পরীক্ষা করতে পারি ? এখানে আমার উদ্দেশ্যগুলির জন্য, আসল সংস্করণ নম্বরটি কী, এটি কেবল পুরানো সংস্করণ কিনা তা আমি সত্যিই চিন্তা করি নাksh
। - কি
$KSH_VERSION
ভাল কি যথেষ্ট? মানে যদি এটি ফাঁকা হয় তবেksh
অগত্যা একটি পুরানো সংস্করণ? এটি কি অন্য ফোরামটি সঠিক ছিল যে এটি এমনকি নতুন সংস্করণগুলির জন্য সেট করা যায় নাksh
? - এটি আদৌ পরীক্ষা করার কোনও উপায় নেই?
PS1
এই ফাংশনটি ব্যবহার করার জন্য সেট আপ করি । যাইহোক, প্রাচীন ksh সমর্থন করে না $()
যে PS1
। সুতরাং এটি যদি ksh এর আধুনিক সংস্করণ PS1
হয় তবে আমি তৈরি করা ফাংশনটি ব্যবহার করতে চাই; এটি যদি পুরানো সংস্করণ হয় তবে আমি ঠিক ব্যবহার করি $PWD
।