ওএসএক্সের কোনও বাইনারিতে বাশ, বোর্ন এবং কর্ন শেলগুলি কি সংকলিত আছে?


7

ওএসএক্স 10.8-এ, আপনি যদি কয়েকটি আলাদা শেল বিকল্পের জন্য বশ, শ এবং কেএসএসের বাইনারিগুলি তুলনা করেন, তবে সেগুলি একই আকার। যদি আপনি এটি এবং cmpবাইনারিগুলি আরও নেন তবে বাইনারিগুলির মধ্যে কেবলমাত্র একক-বাইট পার্থক্য রয়েছে বলে মনে হয়।

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

  1. কেউ কি নিশ্চিত করতে পারেন যে বাইনারি আসলে এইভাবে সংকলিত হয়েছে?
  2. অ্যাপলের দৃষ্টিকোণ থেকে, সমস্ত শাঁস এইভাবে একত্রিত করার তাদের কোনও সুবিধা কি?

উত্তর:


4

আমি মনে করি আপনার মূল ধারণাটি ভুল। 10.8.3 এ পরীক্ষা করা হচ্ছে:

pse@Fourecks:~$ ls -l $(type -p sh bash ksh)
-r-xr-xr-x  1 root  wheel  1333920 Oct 16  2012 /bin/bash*
-r-xr-xr-x  1 root  wheel  1380304 Oct 16  2012 /bin/ksh*
-r-xr-xr-x  1 root  wheel  1334000 Oct 16  2012 /bin/sh*
pse@Fourecks:~$ cmp -l $(type -p sh bash) | wc -l
cmp: EOF on /bin/bash
 1138124
pse@Fourecks:~$ cmp -l $(type -p sh ksh) | wc -l
cmp: EOF on /bin/sh
 1238180

প্রযুক্তিগতভাবে বলতে গেলে shএবং এর মধ্যে কিছু সাদৃশ্য রয়েছে bash(এবং পরে এছাড়াও এর মতো আচরণ করা যেতে পারে sh) তবে kshএটি অবশ্যই আলাদা উত্স থেকে আসে:


ওহ হ্যাঁ, আপনি অবশ্যই ঠিক আছেন; শুধু সিএমপি না করে সিএমপি-এল দিকে তাকানো উচিত ছিল। ধন্যবাদ।
এনএসজি

2
মজার ব্যাপার হচ্ছে, / বিন / SH আসলে হয় ব্যাশ (যদিও এটা নামের উপর ভিত্তি করে SH-এমুলেশন মোড চালানো হবে)। ওএস এক্স এর পূর্ববর্তী কয়েকটি সংস্করণে এটি হয় / বিন / বাশ বা একটি অনুলিপিটির একটি শক্ত লিঙ্ক, তবে কমপক্ষে 10.8.3 এ কিছুটা আলাদা। অন্যদিকে / বিন / কেএসএই একটি সত্যিই আলাদা প্রোগ্রাম যা কেবল একই আকারের হয়ে থাকে।
গর্ডন ডেভিসন

9

ksh এবং bash সম্পূর্ণ পৃথক, তবে বাশ এবং শ বাইনারি বেশিরভাগই অভিন্ন। ওএস এক্স এর শ বাশের একটি সংস্করণ যা:

  • আছে POSIX মোড সক্ষম করা হয়েছে। বাশ ডিফল্টরূপে POSIX মেনে চলে না।
  • বিভিন্ন স্টার্টআপ আচরণ আছে। উদাহরণস্বরূপ sh -lপড়েন না ~/.bash_profile/
  • Xpg_echo ডিফল্টরূপে সক্ষম হয়েছে। সুতরাং echoমত কাজ করে echo -eএবং এটি কোনও বিকল্প সমর্থন করে না।

ডিফল্ট এফসিইডিআইটি sh এ এডিট বা এডিটর বা এ্যাড:

$ diff -y --suppress-common-lines -W 80 <(strings /bin/bash) <(strings /bin/sh)
                                      > /bin/bash
${FCEDIT:-${EDITOR:-ed}}              | ${FCEDIT:-ed}
@(#)PROGRAM:bash  PROJECT:bash-86.1   | @(#)PROGRAM:sh  PROJECT:bash-86.1
$ grep -rF '${FCEDIT:-${EDITOR:-ed}}' ~/Code/Source/bash-86.1/
bash-86.1/bash-3.2/builtins/fc.c:#  define POSIX_FC_EDIT_COMMAND "${FCEDIT:-${EDITOR:-ed}}"
bash-86.1/bash-3.2/builtins/fc.def:#  define POSIX_FC_EDIT_COMMAND "${FCEDIT:-${EDITOR:-ed}}"

উত্সটি http://opensource.apple.com/tarballs/ থেকে ডাউনলোড করা যায় ।

ম্যান বাশ থেকে :

যদি শ নামের সাথে বাশটি প্রেরণ করা হয় তবে এটি পসিক্স স্ট্যান্ডার্ডের সাথে সামঞ্জস্য রেখে যতটা সম্ভব নিবিড়ভাবে ofতিহাসিক সংস্করণের শুরুর আচরণটি নকল করার চেষ্টা করে।

যদিও এটি মূল বোর্ন শেলগুলির অন্যান্য দিকগুলি অনুকরণ করে না।

আসল বোর্ন শেলগুলি আর রক্ষণাবেক্ষণ করা হয় না এবং / বিন / শ এখন বোঝা যাচ্ছে এমন কিছু অন্য শেল যা কেবল পসিক্সের সাথে সম্মতি দেয়। ওএস এক্স এর শ্যাশ এমন ব্যাশিজমগুলি ব্যবহারের অনুমতি দেয় যা অগত্যা অন্যান্য প্ল্যাটফর্মগুলিতে / বিন / শের সাথে কাজ করে না (যেমন উবুন্টুতে ড্যাশ)।

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