যেমনটি বলা হয়েছে, bash
অনেকগুলি ডিস্ট্রোর জন্য সাধারণত ডিফল্ট ইনস্টলেশনতে উপলব্ধ। আপনার স্ক্রিপ্ট ভরসা করে সর্বোচ্চ ব্যবহারকারীর বেসে পৌঁছাবে না zsh
।
আপনার স্ক্রিপ্টটি ডিজাইনের আগে উত্তর দেওয়ার জন্য একটি গুরুত্বপূর্ণ প্রশ্ন হ'ল " কোন স্ক্রিপ্টটি কোন শেলটিতে কার্যকর করা হয় তা কেন ব্যাপার? "
বিভিন্ন শেল বিভিন্ন সিনট্যাক্স ব্যবহার করে বা অতিরিক্ত শেল ফাংশন সরবরাহ করে যা অন্যান্য শেলগুলি সমর্থন করে না। "জেনারেল লিনাক্স এন্ড ইউজার ওয়ার্ল্ড" এর জন্য একটি স্ক্রিপ্ট লিখতে, আপনার স্ক্রিপ্টটি কোনও শেল্ট পরিবেশের উপর নির্ভর করে এমন কোনও সিনট্যাক্স বা শেল ফাংশন ব্যবহার করে কিনা তা নির্ধারণ করুন।
উদাহরণস্বরূপ, bash
শেল কিছু নির্দিষ্ট সম্প্রসারণকে সমর্থন করে যা সমর্থিত নয় dash
, বোর্ন শেল বা /bin/sh
ব্যবহারকারীর সিস্টেমে যা কিছু নির্দেশ করে।
$ ls -l /bin/sh
lrwxrwxrwx 1 root root 4 Feb 19 2014 /bin/sh -> dash
এর echo {1..10}
সাথে /bin/sh
তুলনা করে এক্সিকিউট করার চেষ্টা করুন /bin/bash
এবং আপনি খুব আলাদা আউটপুট পাবেন।
এটি একই জন্য যায় zsh
, বেশিরভাগ bash
সিনট্যাক্সকে সমর্থন করার সময় , bash
শেল দ্বারা সমর্থিত নয় এমন অতিরিক্ত সম্প্রসারণ এবং বাক্য গঠন সরবরাহ করে । নির্দিষ্ট উদাহরণগুলির জন্য শেলগুলির তুলনা করে এই টেবিলগুলি দেখুন ।
bash
যখন ডাকা হয় তখন কাজ করে এমন স্ক্রিপ্টগুলিকে মেনে চলার মাধ্যমে আপনি আপনার সম্ভাব্য ব্যবহারকারী বেসকে ছাড়িয়ে যেতে পারেন #!/bin/sh -u
। তবে এটি জিজ্ঞাসা করার জন্য আরও একটি গুরুত্বপূর্ণ প্রশ্ন জাগায়: " বৃহত্তর বহনযোগ্যতার বিনিময়ে কী বলি দেওয়া হচ্ছে? "
সুরক্ষা উদ্বেগ, কার্যকারিতা, দক্ষতা বা অন্য যে কোনও কিছুতে আপনি মনে করেন যে আপনার স্ক্রিপ্টের পক্ষে অগ্রাধিকার বোধ করা উচিত তা নির্ধারণের জন্য উপযুক্ত কিনা তা নির্ধারণ করুন। এটি সম্ভবত আরও সুরক্ষিত পরিবেশে কাজ করার কারণে আপনি কোনও পরিচিত সুরক্ষিত দুর্বলতার সাথে কোনও স্ক্রিপ্টের বিস্তৃত ব্যবহার নাও চাইতে পারেন।
কমান্ড শেলগুলি তুলনাbash
করার সময় এই স্ক্রিপ্টগুলির জন্য সমর্থনের জন্য অনেকগুলি স্ক্রিপ্ট লিখিত হয় । আপনার স্ক্রিপ্টটি শেল পরিবেশের উপর নির্ভর করে বা অন্য কোনও সিনট্যাক্সের উপর নির্ভর করে তার চেয়ে অনেক বেশি লোক আপনার স্ক্রিপ্টটি চালাতে সক্ষম হবে ।zsh
এছাড়াও, মনে রাখবেন যে ব্যবহারকারী কীভাবে স্ক্রিপ্টটি কার্যকর করে ( বিভিন্ন শেলের মধ্যে স্ক্রিপ্টগুলি ডিবাগ করার জন্যও কার্যকর ) তার উপর আপনার শেষ পর্যন্ত নিয়ন্ত্রণ নেই :
মনে রাখবেন যে আপনি যদি শেল স্ক্রিপ্টটি পড়ার জন্য শেল ব্যবহার করেন ("শ স্ক্রিপ্টনাম") এটি সরাসরি চালানোর পরিবর্তে ("./scriptname"), শেলটি শেল স্ক্রিপ্টের শুরুতে সমস্ত মন্তব্যকে মন্তব্য হিসাবে বিবেচনা করবে। বিশেষত, স্ক্রিপ্ট ("#! / Bin / sh -u") সম্পাদন করার সময় দোভাষীকে যে মন্তব্যটি ব্যবহার করতে হবে তা সেই মন্তব্যটিকে উপেক্ষা করা হবে, কারণ সেই অনুবাদকের পাশে তালিকাভুক্ত সমস্ত অপশনই থাকবে।
সুতরাং, আপনি এ সম্পর্কে সর্বোত্তম যা করতে পারেন তা হ'ল আপনার স্ক্রিপ্টগুলি পোর্টেবল করে তোলা, যতক্ষণ না এটি কার্যকর হয় তার কোনও দুর্দান্ত ত্যাগ নেই।
আপনি বাশ কোডিং কনভেনশনগুলি দেখতে পাবেন - স্ট্যাক ওভারফ্লো ।
zsh
জনপ্রিয় হতে পারে অন্যের মধ্যে (ব্যাংকিং সেক্টর) এটি কার্যত অনাহূত। আমি মনে করি আপনার যদি এই বিষয়ে সঠিক পরামর্শের প্রয়োজন হয় তবে আপনাকে আরও অনেক তথ্য দেওয়া উচিত।