/ বিন / ড্যাশ কি?


27

আমি ভেবেছিলাম /bin/shআমার পছন্দসই শেলটির একটি সিমিলিংক। আমি সবসময় ব্যবহার করেছি bash, তাই আমি ধরে নিয়েছি যে /bin/shএটি নির্দেশ করবে /bin/bash। এটি দেখা যাচ্ছে যে এটি নির্দেশ করে /bin/dash

এটি মজাদার হয়। আমি শুরু করি dashএবং করি echo $SHELLএবং এটি মুদ্রণ করে /bin/bash(তাই তারা মূলত একই?)। যাইহোক, ম্যান পৃষ্ঠাটি ম্যান পৃষ্ঠা dashথেকে সম্পূর্ণ আলাদা bash(যাতে তারা একই হয় না ?)।


1
@ ওয়াজার্ড, এই প্রশ্নটি কি লিনাক্স-নির্দিষ্ট?
আইয়ুব

1
দীর্ঘশ্বাস ফেলুন, আমি এই সুন্দর উত্তরগুলির সবটিকেই উচ্চারণ করতে পারি না, যেহেতু আমার 15 টি প্রতিনিধি দরকার।
স্ট্যাকওভারফ্লোতে আমার

4
মিমি ড্যাশ .. কীভাবে / বিন / ক্র্যাশ (জিডিবি অনুরাগীদের জন্য), / বিন / স্ল্যাশ (একটি তাত্পর্যপূর্ণ প্রোগ্রাম), / বিন / ম্যাস (কোরিয়ার কঠিন সময়), / বিন / স্যাশ (চিয়ারলিডারদের জন্য), / বিন / থ্রেশ (আপনার এইচডিডি-তে শক্ত), / বিন / ফ্ল্যাশ (তবে কেবলমাত্র আপনি যদি আপনার ডেটা এনক্রিপ্ট করেন তবে), / বিন / স্ট্যাশ (পরে এটি সন্ধান করার জন্য ভাগ্য ভালো), / বিন / নগদ (আপনি সর্বদা ইন-দ্য-ইন-দ্য), / বিন / প্যাশ (পিসিতে রোমান্স করা), / বিন / গ্যাশ (আআআআআআআরগি!)।
পিপি

2
@ পিপি - আমি মেটাল সংগীত অনুরাগীদের জন্য / বিন / থ্রেশ পড়তে এবং 80 এর রক ব্যান্ডের লিড গিটারিস্টদের ভক্তদের জন্য / বিন / স্ল্যাশ
পড়তাম

1
কারণ echo $SHELLকপি করে প্রিন্ট /bin/bashকারণ যে পরিবর্তনশীল যখন আপনি বর্তমান শেল আপনি চালাচ্ছেন বদলে লগইন ডিফল্ট শেল আরম্ভ জন্য সেট আছে। বাশ প্রম্পট থেকে ksh বা zsh শুরু করুন এবং echo $SHELLএখনও বলবেন /bin/bashpsবর্তমানে কী চলছে তা দেখতে ব্যবহার করুন ।
পরবর্তী বিজ্ঞপ্তি না দেওয়া পর্যন্ত বিরতি দেওয়া হয়েছে।

উত্তর:


43

ডেবিয়ান এবং উবুন্টু বেশ কয়েকটি জিনিসের কারণে ড্যাশ (আইরিচ) এ স্যুইচ করেছে। প্রথমত, বছরের পর বছর ধরে বাশ বড় হয়ে উঠেছে। আসলে /bin/bashআমার উবুন্টু 8.04 সিস্টেমে বাইনারিটি প্রায় দশগুণ (!) হিসাবে বড় /bin/dash। এখন, প্রতিদিনের শেল ব্যবহারের ক্ষেত্রে এটি তেমন গুরুত্বপূর্ণ নয়, তবে নিম্নলিখিত পরিস্থিতিতে এটি গুরুত্বপূর্ণ does

  • ড্যাশ অনেক ছোট এবং এইভাবে দ্রুত লোড হয়, যা init-স্ক্রিপ্টগুলির জন্য একটি वरदान। আপনার যদি এগুলি প্রচুর শুরু করতে হয় তবে প্রতিবার বাশের পরিবর্তে ড্যাশ লোড করা জিনিসগুলিকে যথেষ্ট গতি দেয়।
  • ড্যাশের ছোট আকারের কারণে, দেবিয়ান এবং উবুন্টু তাদের আরআরডি আকারের একটি বিশাল বড় অংশ শেভ করতে সক্ষম হয়েছে, অন্যান্য স্টাফের জন্য আরও জায়গা রেখে (এবং আবার দ্রুতগতিতে জিনিসগুলি)।

স্ক্রিপ্টিংয়ের জন্য ড্যাশের পরিবর্তে ড্যাশ ব্যবহার করার নেতিবাচক দিকটি হ'ল প্রচুর লোকেরা কেবল বাশের সিনট্যাকটিকাল নান্দিকতা ব্যবহার করে, তথাকথিত বাশিজম । বাশিজমের উদাহরণগুলি সাবস্ট্রিংগুলি হ'ল:

echo $SHELL
/bin/bash
a=1234567890
echo ${a}
1234567890
echo ${a:3}
4567890
echo ${a:3:1}
4

এবং এই:

echo ${a#123}
4567890

অন্যদিকে ড্যাশ, প্রধানত পসিক্স অনুগত হওয়ার লক্ষ্য রাখে (এবং এর চেয়ে বেশি কিছু নয়), আপনি যদি এটি চেষ্টা করেন তবে আপনাকে একটি খারাপ বিকল্প ত্রুটি দেবে:

echo $SHELL
/bin/dash 
# actually, it will read /bin/bash above, because if you just run dash
# it will not set the $SHELL variable :)
a=1234567890
echo ${a}
1234567890
echo ${a:3}
dash: Bad substitution

যদি আপনি ব্যবহার এই বিষয়টি হবে /bin/sh(এবং dashআপনার shellscripts এবং তাদের ব্যবহারের Bashisms জন্য অনুবাদক হিসাবে)। দেবিয়ান এবং উবুন্টুর বাশিজম সম্পর্কে বিশেষত উইকি পৃষ্ঠাগুলি রয়েছে এবং কেন তারা সাধারণত শেলস স্ক্রিপ্টগুলিতে এবং বিশেষত ইন-স্ক্রিপ্টগুলিতে খারাপ। অতএব, আপনার স্ক্রিপ্টের জন্য আপনার প্রয়োজন /bin/shবা /bin/bashদোভাষী হিসাবে আপনার সচেতনভাবে নির্বাচন করা উচিত ।

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


1
আপনি যদি ব্যাশিজম সহ স্ক্রিপ্টগুলি লিখেন তবে দয়া করে নির্দিষ্ট করুন /bin/bash; অনেকগুলি নন-লিনাক্স সিস্টেমে প্রকৃত shশাঁস থাকে যা এর সাথে সামঞ্জস্যপূর্ণ নয় bash
ক্রিস এস

echo ${a#123}বাশিজম নয়, এটি পসিক্স প্যারামিটার সম্প্রসারণের অংশের অংশ। pubs.opengroup.org/onlinepubs/009695399/utilities/… আপনি কেবল আরও উন্নত সেড স্টাইল বাশ পাবেন না, পজিক্সগুলি স্টাইল স্ট্রিং + সাধারণ প্রসারিত অক্ষর। অর্থ, পসিএক্স এছাড়াও অনুমতি দেয়echo ${a#*6}
জেএম বেকার


1

ড্যাশ হ'ল একটি হালকা বাশ প্রতিস্থাপন, আমি ধরে নিচ্ছি যে আপনি উবুন্টু ব্যবহার করছেন যা কয়েক বছর আগে এটিতে পরিবর্তিত হয়েছিল।

যদিও এটি অত্যধিক ভাল না, ইমো। http://forums.debian.net/viewtopic.php?f=20&t=45116


0

যেহেতু সমস্ত শেল $SHELLচালিত হওয়ার পরে সেট করা হয় নি , আপনি আপনার বর্তমান শেলটি এটি সহ খুঁজে পাবেন:

echo $0

যদি এটি একটি ত্রুটি দেয় তবে এটি সিএসএস, অন্যথায় এটিই argv[0]আপনাকে অনুরোধ করেছিল, যা সাধারণত শেল, সম্ভবত একটি শীর্ষস্থানীয় -হাইফেন সহ এটি বোঝাতে এটি লগইন শেল।

এটি গ্যারান্টিযুক্ত নয় , যেহেতু argv[0]আমন্ত্রণ প্রক্রিয়াটির নিয়ন্ত্রণাধীন, তবে এটি বাস্তবে সবচেয়ে নির্ভরযোগ্য পদ্ধতির মধ্যে রয়েছে।

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