পোর্টেবল স্ক্রিপ্টগুলি লেখার জন্য কখন গুরুত্বপূর্ণ?


18

আমি লিখি বেশিরভাগ কোড পিএইচপি। আমি সম্প্রতি শেল স্ক্রিপ্টিং শিখতে শুরু করেছি। বেশিরভাগ সংস্থান এবং টিউটোরিয়াল আমি এসেছি বাশের জন্য নির্দিষ্ট। কেউ বাশিজম সম্পর্কে সতর্ক করে এবং কেউ তা দেয় না। আমি এখানে এবং স্ট্যাক ওভারফ্লো প্রচুর পড়ছি।

যখনই কোনও উত্তর বাশিজম ব্যবহার করে , কেউ অনিবার্যভাবে মন্তব্য করতে বলবেন:

আপনার << এখানে বাশিজম >োকানো উচিত নয়। এটি বহনযোগ্য নয়।

প্রশ্নটি ট্যাগ করা অবস্থায়ও এটি ঘটেছিল bash। আমার কাছে, এটি কোনও পিএইচপি প্রোগ্রামারকে বলার মতো যে তারা পিএইচপি 5 তে নতুন কোডটি ব্যবহার করা উচিত নয় কারণ এটি পিএইচপি 4 ব্যবহার করতে পারে না বা কাউকে বলছে যে তারা ম্যাকের জন্য কিছু লিখবে না কারণ এটি ব্যবহার করা যাচ্ছে না উইন্ডোজে

আমি যখন পিএইচপি লিখি তখন আমি একটি ন্যূনতম প্রয়োজনীয়তা বাছাই করি এবং আমি সামনের কোডটি সামঞ্জস্য করি । আমি এটিকে পিছনে সামঞ্জস্যপূর্ণ করার বিষয়ে চিন্তা করি না ।

আমি যদি #!/bin/bashশেবাং হিসাবে ব্যবহার করি তবে আমি বাশিজম কেন ব্যবহার করব না? আমি এইরকম যে কিছু মানুষ শুধু মত পেতে শুরু করছি ব্যাশ শুধু এটা অনুরোধে জন্য bashisms (শ্লেষ উদ্দেশ্যে)।

লোকেরা প্রায়শই bashএবং shellঅদলবদল করে - সম্ভবত ব্যাশ অনেক সিস্টেমে ডিফল্ট শেল। তাই আমি একটি মন্তব্য জুড়ে বুঝতে পারেন সতর্ক করতে যে কোড ব্যবহার bashisms, কিন্তু আমি সংশ্লেষ বুঝতে পারছি না এটি এতই ভুল তাদের ব্যবহার করার জন্য।

স্পষ্টতই, আমি ব্যক্তিগত ব্যবহারের জন্য কঠোরভাবে কোনও স্ক্রিপ্ট লিখছি তবে আমি যে ভাষায় চাই তা লিখতে পারি। তবে আমি ভাবতে চাই যে আমি যে কোডটি লিখি সেগুলির কিছু অন্যের পক্ষে কার্যকর হতে পারে।

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

সুতরাং, পোর্টেবল স্ক্রিপ্টগুলি লেখার জন্য কখন গুরুত্বপূর্ণ?

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

  • কোন ধরণের স্ক্রিপ্টগুলি যথাসম্ভব পোর্টেবল হতে হবে?
  • ব্যাশ ইনস্টল না করা সিস্টেমগুলি কতটা সাধারণ?
  • যদি সিস্টেমটি ব্যাশ ইনস্টল করে থাকে তবে এটিতে কি জিএনইউ সংস্করণটি অনুসন্ধানের এবং অন্যান্য উপযোগিতার রয়েছে?

4
আমি এই প্রশ্নটি উত্সাহিত করেছি এবং এর জবাব দিয়েছি, তবে আমি এটির বিষয়ে যত বেশি চিন্তা করি কেবলমাত্র শেষ 2 টি প্রশ্ন সাইটের সাথে খাপ খায়। অন্যরা "প্রাথমিকভাবে মতামত ভিত্তিক"।
জর্দানম

1
এই প্রশ্নের একটি মেটা দিকও রয়েছে: যদিও এটি প্রশ্নের প্রাথমিক উত্তর দেওয়ার ক্ষেত্রে সাহায্য নাও করতে পারে, "এইটি বহনযোগ্য নয়" এর মতো মন্তব্য অন্যান্য পাঠকদের পক্ষে প্রশ্ন / উত্তর বা মাস বা বছর পরে হোঁচট খাওয়ার পক্ষে খুব সহায়ক হতে পারে।
বনাঙ্গুইন

2
@ বনাঙ্গুইন মন্তব্য করেছেন যে "এটি পোর্টেবল নয়" আমাকে বিরক্ত করবেন না। এটি কেবল একটি এফওয়াইআই। আমি নিজেই এই ধরণের মন্তব্য করেছি। এটি "আপনার ব্যবহার করা উচিত নয় ..." যা আমাকে বিরক্ত করে। এটি সূচিত করে যে উত্তরটির সাথে কিছু ভুল আছে। উত্তরটি হ্রাসকারী কোডের প্রস্তাব দিলে এটি বৈধ হবে for সুতরাং এটি আমাকে ভাবছিল যে বাশের সাথে কী ভুল হয়েছে।
toxalot

2
+1 টি। বিশেষত যখন প্রশ্নের bashএকা ট্যাগ থাকে, কেউ মন্তব্য করেন "এটি বাশিজম এবং পোর্টেবল নয়"। আমি যখন ট্যাগ করা কোনও প্রশ্নের উত্তর দিই তখন Cতা পোর্টেবল হবে কি না সে বিষয়ে আমার কোনও চিন্তা Javaনেই।
পিপি

4
আমি মনে করি যে এটি একটি bashনির্দিষ্ট বৈশিষ্ট্য, এবং পোর্টেবল নয়, সে সম্পর্কে এটি উল্লেখ করা সর্বদা ভাল G আমি কাউকে কখনও বলতে দেখিনি "এটি একটি বাশিজম এবং আপনার এটি কখনও ব্যবহার করা উচিত নয়"।
মার্টিন টর্নয়েজ

উত্তর:


15

এই সম্প্রদায়ের সদস্য হিসাবে আমি প্রায়শই দেখি না যে লোকেরা বাশকে লক্ষ্য করে এমন জিনিসগুলির জন্য বাশামিকে অবজ্ঞা করছে। বহনযোগ্যতার কথা বলার সময়, জিএনইউমগুলি বাশিজমের চেয়ে অনেক খারাপ। যতক্ষণ আপনি bashআপনার শেবাংয়ের জন্য ব্যবহার করেন ততক্ষণ আপনি স্ক্রিপ্টটি ব্যবহার করে কার্যকর হওয়ার আশা করতে পারেন bash। তবে আপনি স্পষ্টভাবে পরীক্ষা না করা পর্যন্ত আপনি সংস্করণটির গ্যারান্টি দিতে পারবেন না। বাশ সংস্করণ 4 কিছু সহায়ক বৈশিষ্ট্য যেমন এসোসিয়েটিভ অ্যারেগুলি নিয়ে আসে তবে বাশ ভি 3 এখনও ওএস এক্স এবং আরএইচএল 5 এ বহুল ব্যবহৃত হয়।

কোন ধরণের স্ক্রিপ্টগুলি যথাসম্ভব পোর্টেবল হতে হবে?

এটি আপনার প্রয়োজন এবং বিকাশকারী হিসাবে আপনি কী সমর্থন করতে চান তা সম্পর্কে এটি আরও বেশি। আপনি যদি এমন কোনও অ্যাপ্লিকেশনের জন্য একটি ইনস্টল স্ক্রিপ্ট লিখছেন যা সমস্ত ধরণের * NIX সমর্থন করে, তবে বহনযোগ্যতা খুব গুরুত্বপূর্ণ হবে।

ব্যাশ ইনস্টল না করা সিস্টেমগুলি কতটা সাধারণ?

ফ্রিবিএসডি এবং সোলারিস 10 সিস্টেমগুলির উদাহরণ যা ডিফল্টরূপে ইনস্টল করা বাশ নিয়ে আসে না। এম্বেড থাকা সিস্টেম ব্যতীত বেশিরভাগ লিনাক্স সিস্টেমে এটি থাকতে পারে।

যদি সিস্টেমটি ব্যাশ ইনস্টল করে থাকে তবে এটিতে কি জিএনইউ সংস্করণটি অনুসন্ধানের এবং অন্যান্য উপযোগিতার রয়েছে?

না, এবং এটি বহনযোগ্যতার সাথে আসল সমস্যা। যদি পোর্টেবিলিটিটি গুরুত্বপূর্ণ হয় তবে আপনার কেবল পসিক্স স্ট্যান্ডার্ড দ্বারা সংজ্ঞায়িত শেল কমান্ড বৈশিষ্ট্য ব্যবহার করা উচিত। জিএনইউ ইউটিলিটিগুলি ফ্রিবিএসডি-র মতো নন-জিএনইউ সিস্টেমে ইনস্টল করা যেতে পারে, তবে এগুলি প্যাথ-এ প্রথম হওয়ার সম্ভাবনা নেই, এবং ইনস্টল করার জন্য আপনি সেই সরঞ্জামগুলিতে নির্ভর করতে পারবেন না।


1
আমি মনে করি এখানকার চেয়ে এটি আরও বেশি যেখানে আমি প্রায়শই দেখি লোকেরা বাশামিকে অবজ্ঞা করছে । আমি কেবল জানি যে আমি প্রায়শই এটি হতাশ করার জন্য যথেষ্ট পরিমাণে লক্ষ্য করেছি এবং আমাকে এই প্রশ্নটি জিজ্ঞাসা করার জন্য অনুরোধ করে।
toxalot

1
সুতরাং জিএনইউ ইউটিলিটিগুলি ইনস্টল করা থাকলেও প্যাথ-এ প্রথম নয়, সেগুলি বিশেষভাবে কল করার কোনও উপায় আছে কি? নাহলে এগুলি কেন ইনস্টল করেছেন?
টক্সালোট

@ টক্সালোট: বাইনারি এবং স্ক্রিপ্টগুলি পরম পথ ব্যবহার করে সুস্পষ্টভাবে বলা হয়।
বনাঙ্গুইন

1
@ বনাঙ্গুইন সুতরাং কারও কাছে যদি বাশ এবং জিএনইউ ইউটিলিটিগুলি ইনস্টল করা থাকে (তবে পাঠে নয়), তারা স্ক্রিপ্টটি ব্যবহার করতে পারত যদি findআমি এটি ব্যবহার করে থাকি এবং অন্য কোনও জিএনইউ-নির্দিষ্ট ইউটিলিটিগুলির জন্য পরম পাথ ব্যবহার করতে এটি সম্পাদনা করতে পারি? স্পষ্টতই, এটি কোনও ইনস্টলার স্ক্রিপ্টের জন্য ব্যবহারকারী-বান্ধব নয়। তবে আমি অন্যদের চাইলে তাদের ধরার জন্য গিটহাবের উপর কিছু রাখার কথা ভাবছি। আমি এটি যত্নশীল না যে এটি প্রতিটি সিস্টেমে পোর্টেবল না । আমি চাই না যে এটি অনেক সিস্টেমে অকেজো হয়ে উঠুক
toxalot

1
@ টক্সালোট: হ্যাঁ এটি কাজ করতে পারে। আপনি যদি FIND=/opt/gnu/dispicable/bin/findস্ক্রিপ্টের শুরুতে এর মতো কিছু রেখে থাকেন এবং তারপরে আপনার স্ক্রিপ্টের ${FIND}পরিবর্তে ব্যবহার করেন findআপনি লোকদের তাদের ইনস্টল করার পথগুলি রাখার জন্য একটি স্থান (!) স্থান দিন এবং আপনার স্ক্রিপ্টটিকে সঠিক সরঞ্জামগুলি ব্যবহার করুন।
বনাঙ্গুইন

5

সুতরাং, পোর্টেবল স্ক্রিপ্টগুলি লেখার জন্য কখন গুরুত্বপূর্ণ?

কোন ধরণের স্ক্রিপ্টগুলি যথাসম্ভব পোর্টেবল হতে হবে?

যখন আপনি এগুলি আপনার কাজের পরিবেশের জন্য ব্যবহার করছেন এবং আপনি বিভিন্ন মেশিনে (বা ভবিষ্যতে পারে) কাজ করেন - এবং, কাজ করতে নামার আগে আপনাকে নিজের সরঞ্জামগুলি পুনরায় লিখতে হবে না।

যেমন: একটি ট্র্যাশ স্ক্রিপ্ট / rmপ্রতিস্থাপন


মার্ক স্টুয়ার্ট:

... আমার সমস্যা সমাধানের সরঞ্জামকিটের জন্য আমি ধরে নিয়েছি আমার কাছে কেবলমাত্র ভিআই এবং কর্ন শেল থাকবে। এবং আমি কমান্ডগুলি ব্যবহার করার চেষ্টা করি যা ইউনিক্সের বেশিরভাগ স্বাদে কাজ করে।


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