শেল প্রোগ্রাম লেখার সময়, আমরা প্রায়শই ব্যবহার করি /bin/sh
এবং /bin/bash
। আমি সাধারণত ব্যবহার bash
করি তবে তাদের মধ্যে পার্থক্য কী তা আমি জানি না।
মধ্যে মূল পার্থক্য কি bash
এবং sh
?
আমরা কি যখন প্রোগ্রামিং সচেতন হতে করতে হবে bash
এবং sh
?
শেল প্রোগ্রাম লেখার সময়, আমরা প্রায়শই ব্যবহার করি /bin/sh
এবং /bin/bash
। আমি সাধারণত ব্যবহার bash
করি তবে তাদের মধ্যে পার্থক্য কী তা আমি জানি না।
মধ্যে মূল পার্থক্য কি bash
এবং sh
?
আমরা কি যখন প্রোগ্রামিং সচেতন হতে করতে হবে bash
এবং sh
?
উত্তর:
sh
(বা শেল কমান্ড ল্যাঙ্গুয়েজ) হ'ল পসিক্স স্ট্যান্ডার্ড দ্বারা বর্ণিত একটি প্রোগ্রামিং ভাষা । এটা অনেক বাস্তবায়নের আছে ( ksh88
, dash
, ...)। bash
এর বাস্তবায়ন হিসাবে বিবেচনা করা যেতে পারে sh
(নীচে দেখুন)।
কারণ sh
একটি স্পেসিফিকেশন, বাস্তবায়ন নয়, /bin/sh
বেশিরভাগ পসিক্স সিস্টেমে প্রকৃত বাস্তবায়নের জন্য একটি সিমিলিংক (বা একটি হার্ড লিঙ্ক)।
bash
একটি sh
সামঞ্জস্যপূর্ণ বাস্তবায়ন হিসাবে শুরু হয়েছে (যদিও এটি POSIX মানটি কয়েক বছরের মধ্যে পূর্বাভাস দেয়) তবে সময়ের সাথে সাথে এটি অনেকগুলি এক্সটেনশন অর্জন করেছে। এর মধ্যে অনেকগুলি এক্সটেনশান বৈধ পসিক্স শেল স্ক্রিপ্টগুলির আচরণ পরিবর্তন করতে পারে, তাই নিজে bash
থেকে কোনও বৈধ পসিক্স শেল নয়। বরং এটি পসিক্স শেল ভাষার একটি উপভাষা।
bash
একটি --posix
স্যুইচ সমর্থন করে , যা এটিকে আরও পসিক্স-অনুবর্তী করে তোলে। এটি POSIX নকল করার চেষ্টা করে যদি হিসাবে আহ্বান জানানো হয় sh
।
দীর্ঘকাল ধরে, বেশিরভাগ জিএনইউ / লিনাক্স সিস্টেমগুলিতে /bin/sh
নির্দেশ করতে ব্যবহৃত হয় /bin/bash
। ফলস্বরূপ, দুজনের মধ্যে পার্থক্য উপেক্ষা করা প্রায় নিরাপদ হয়ে গিয়েছিল। তবে সম্প্রতি এটি পরিবর্তন হতে শুরু করে।
সিস্টেমগুলির কয়েকটি জনপ্রিয় উদাহরণ যেখানে /bin/sh
ইশারা দেয় না /bin/bash
(এবং /bin/bash
কিছুগুলির মধ্যে এমনকি উপস্থিত নাও হতে পারে):
sh
হয় dash
;initramfs
। এটি ash
শেল বাস্তবায়ন ব্যবহার করে ।pdksh
, কর্ন শেলের বংশধর। ফ্রিবিএসডি sh
হ'ল মূল ইউনিক্স বোর্ন শেলের বংশধর। সোলারিসের নিজস্ব রয়েছে sh
যা দীর্ঘকাল ধরে পসিক্স-কমপ্লায়েন্ট ছিল না; হায়রলুম প্রকল্প থেকে একটি বিনামূল্যে বাস্তবায়ন পাওয়া যায় ।/bin/sh
আপনার সিস্টেমে কী কী পয়েন্ট রয়েছে তা আপনি কীভাবে আবিষ্কার করতে পারেন ?
জটিলতাটি হ'ল এটি /bin/sh
একটি প্রতীকী লিঙ্ক বা একটি হার্ড লিঙ্ক হতে পারে। যদি এটি একটি প্রতীকী লিঙ্ক হয় তবে এটি সমাধানের একটি পোর্টেবল উপায় হ'ল:
% file -h /bin/sh
/bin/sh: symbolic link to bash
এটি যদি একটি শক্ত লিঙ্ক হয় তবে চেষ্টা করুন
% find -L /bin -samefile /bin/sh
/bin/sh
/bin/bash
প্রকৃতপক্ষে, -L
পতাকাটি সিমলিংক এবং হার্ডলিঙ্ক উভয়কেই কভার করে, তবে এই পদ্ধতির অসুবিধাটি হ'ল এটি বহনযোগ্য নয় - জিএনইউ অনুসন্ধান এবং ফ্রিবিএসডি উভয়ই এটি সমর্থন করে তবে পসিক্স বিকল্পটি সমর্থন করার প্রয়োজন হয় না ।find
-samefile
শেষ পর্যন্ত, স্ক্রিপ্টের প্রথম লাইন হিসাবে «শেবাং» লাইনটি লিখে কোনটি ব্যবহার করবেন তা সিদ্ধান্ত নেওয়া আপনার পক্ষে up
যেমন
#!/bin/sh
ব্যবহার করবে sh
(এবং যা কিছু ঘটতে পারে),
#!/bin/bash
/bin/bash
এটি উপলভ্য হলে ব্যবহার করবে (এবং কোনও ত্রুটি বার্তা না থাকলে এটি ব্যর্থ হবে)। অবশ্যই, আপনি আরও একটি বাস্তবায়ন নির্দিষ্ট করতে পারেন, যেমন
#!/bin/dash
আমার নিজের স্ক্রিপ্টগুলির জন্য, আমি sh
নিম্নলিখিত কারণে পছন্দ করি :
bash
তাদের থাকা প্রয়োজনsh
bash
পাশাপাশি ব্যবহার করার সুবিধা আছে । এর বৈশিষ্ট্যগুলি প্রোগ্রামিংকে আরও সুবিধাজনক এবং অন্যান্য আধুনিক প্রোগ্রামিং ভাষায় প্রোগ্রামিংয়ের মতো করে তোলে। এর মধ্যে স্কোপড স্থানীয় ভেরিয়েবল এবং অ্যারের মতো জিনিস অন্তর্ভুক্ত রয়েছে। সাদামাটা sh
একটি খুব সংক্ষিপ্ত প্রোগ্রামিংয়ের ভাষা।
bash
যদি সিনপ্যাক্স ত্রুটির ক্ষেত্রে ডিসপ্লে উপায়ের সাথে আরও দরকারী ত্রুটি বার্তাগুলি চালিত করেন run আপনি কেবল ব্যাশ ব্যবহার করে সময় সাশ্রয় করতে পারেন।
%
আপনার কমান্ড লাইনের শুরুতে কী বোঝায়?
$
পরিবর্তে %
বা #
মূল শেলের জন্য ব্যবহার করে।
$
এবং #
...
sh
বেশ ভাল ছিলাম (যা বোর্ন-আবার শেলের জন্য দাঁড়িয়েছে)। তবে এটি খুব আদিম ছিল এবং ESC
চরিত্রগুলির মতো টার্মিনাল ইভেন্টগুলিতে সাড়া দেয়নি । তারপরে ksh
(বাশের আগেও) এসেছিল, তারপরে বাশ তাদের পক্ষে শুরু হয়েছিল যারা আরও ভাল শেলের ধারণা পছন্দ করে তবে ksh ঘৃণা করে। :-)
sh
: http://man.cx/sh
bash
: http://man.cx/bash
টিএল; ডিআর : আরও বেশি মার্জিত সিনট্যাক্স এবং আরও কার্যকারিতা সহ একটি bash
সুপারস্টার sh
। আধুনিক প্ল্যাটফর্মগুলিতে এটি সর্বব্যাপী হওয়ায় প্রায় সব ক্ষেত্রেই বাশ শেবাং লাইন ব্যবহার করা নিরাপদ।
নোট: কিছু পরিবেশে, sh
হয় bash
। চেক sh --version
।
এই প্রশ্নটি ঘন ঘন লোকেদের ব্যবহারের জন্য প্রচলিত হিসাবে মনোনীত করা হয়েছে sh
এবং অবাক হয় যে এটি এর মতো আচরণ করছে না bash
। এখানে সাধারণ ভুল বোঝাবুঝি এবং সমস্যাগুলির দ্রুত পাল্টে ফেলা হচ্ছে।
প্রথমে, আপনার কী বুঝতে হবে তা বুঝতে হবে।
sh scriptname
, অথবা এটি চালানোর scriptname
এবং #!/bin/sh
মধ্যে কুঁড়েঘর লাইন, আপনি POSIX আশা করা উচিত sh
আচরণ।bash scriptname
চালিত করেন বা এটি দিয়ে চালিয়ে যান scriptname
এবং #!/bin/bash
(বা স্থানীয় সমতুল্য) থাকেন তবে আপনার বাশ আচরণ আশা করা উচিত।একটি সঠিক শেবাং থাকা এবং কেবল স্ক্রিপ্টের নাম টাইপ করে স্ক্রিপ্টটি চালানো (সম্ভবত কোনও আত্মীয় বা পুরো পথ সহ ) সাধারণত পছন্দসই সমাধান is একটি সঠিক শেবাং ছাড়াও, এটির জন্য স্ক্রিপ্ট ফাইলটি কার্যকর করার অনুমতি প্রয়োজন ( chmod a+x scriptname
)।
সুতরাং, তারা আসলে কীভাবে পৃথক হয়?
বাশ রেফারেন্স ম্যানুয়ালটিতে একটি বিভাগ রয়েছে যা পার্থক্যগুলি গণনা করার চেষ্টা করে তবে বিভ্রান্তির কয়েকটি সাধারণ উত্স অন্তর্ভুক্ত
[[
পাওয়া যায় না sh
(কেবলমাত্র [
এটি আরও চতুর এবং সীমাবদ্ধ)।sh
অ্যারে নেই।local
, source
, function
, shopt
, let
, declare
, এবং select
করতে পোর্টেবল নয় sh
। (কিছু sh
বাস্তবায়ন যেমন উদাঃlocal
)for((i=0;i<=3;i++))
লুপ, +=
বৃদ্ধি নিয়োগ, ইত্যাদি $'string\nwith\tC\aescapes'
বৈশিষ্ট্য সম্ভবত হয় POSIX জন্য গৃহীত (অর্থাত এটা এখন ব্যাশ কাজ করে, কিন্তু এখনো দ্বারা সমর্থিত হবে না sh
সিস্টেম যা শুধুমাত্র বর্তমান মেনে চলে উপর পসিএক্স স্পেসিফিকেশন, এবং সম্ভবত কিছু সময়ের জন্য আসবে না)।<<<'here strings'
।*.{png,jpg}
এবং {0..12}
বক্রবন্ধনী সম্প্রসারণ।~
$HOME
কেবল বাশকে বোঝায় (এবং আরও সাধারণভাবে ~username
হোম ডিরেক্টরিতে username
)।/bin/sh
বাস্তবায়ন থেকে নিখোঁজ হতে পারে ।<(cmd)
এবং >(cmd)
।&|
জন্য 2>&1 |
এবং &>
জন্য রয়েছে> ... 2>&1
<>
পুনঃনির্দেশ সহ কপ্রোসেসগুলি সমর্থন করে ।${substring:1:2}
, ${variable/pattern/replacement}
যদি রূপান্তর, ইত্যাদি$[expression]
সিনট্যাক্স রয়েছে যা POSIX পাটিগণিত $((expression))
সিনট্যাক্সের সাথে প্রতিস্থাপন করা উচিত । (কিছু উত্তরাধিকার প্রাক-পসিক্স sh
বাস্তবায়ন যদিও এটি সমর্থন করে না))$RANDOM
, $SECONDS
, $PIPESTATUS[@]
এবং $FUNCNAME
ব্যাশ এক্সটেনশানগুলি আছে।export variable=value
এবং [ "x" == "y" ]
যা বহনযোগ্য নয় ( export variable
ভেরিয়েবল অ্যাসাইনমেন্ট থেকে পৃথক হওয়া উচিত, এবং [ ... ]
একক সমান চিহ্ন চিহ্ন ব্যবহারে পোর্টেবল স্ট্রিং তুলনা )।মনে রাখবেন, এটি একটি সংক্ষিপ্ত তালিকা। সম্পূর্ণ স্কুপের জন্য রেফারেন্স ম্যানুয়ালটি দেখুন, এবং অনেক ভাল কাজের জন্য http://mywiki.wooledge.org/ বাশিজম; এবং / অথবা http://shellcheck.net/ ব্যবহার করে দেখুন যা কেবলমাত্র অনেকগুলি ব্যাশ-কেবলমাত্র বৈশিষ্ট্যের জন্য সতর্ক করে।
একটি সাধারণ ত্রুটি হল #!/bin/bash
শেবাং লাইন থাকা, তবে তবুও sh scriptname
আসলে স্ক্রিপ্টটি চালানোর জন্য ব্যবহার করা। এটি মূলত কোনও বাশ-কেবল কার্যকারিতা অক্ষম করে, তাই আপনি সিনট্যাক্স ত্রুটিগুলি পান যেমন অ্যারে ব্যবহারের চেষ্টা করার জন্য। (শেবাং লাইনটি সিন্টেক্সিকভাবে একটি মন্তব্য, সুতরাং এটি এই দৃশ্যে সহজভাবে উপেক্ষা করা হবে))
দুর্ভাগ্যক্রমে, বাশ যখন আপনাকে এই নির্মাণগুলি ব্যবহার করার চেষ্টা করবে তখন সতর্ক করবে না sh
। এটা সম্পূর্ণ নিষ্ক্রিয় হয় না সব যেমন ব্যাশ শুধুমাত্র কার্যকারিতা, হয়, তাই এটি আবাহন করার মাধ্যমে ব্যাশ চলমান sh
চেক করতে একটি ভালো উপায় নয় যদি আপনার স্ক্রিপ্টটি সঠিকভাবে পোর্টেবল হয় ash
/ dash
/ POSIX sh
বা মত রূপ heirloomsh
export variable=value
POSIX দ্বারা বাধ্যতামূলক হয়: pubs.opengroup.org/onlinepubs/009695399/utilities/export.html । সম্ভবত এটি কিছু প্রাচীন শাঁসে উপলভ্য নয় তবে এটি অবশ্যই বাশিজম নয়।
শেল হ'ল একটি অপারেটিং সিস্টেমের পরিষেবাগুলিতে অ্যাক্সেসের জন্য ব্যবহারকারী এবং ওএসের মধ্যে একটি ইন্টারফেস। এটি জিওআই বা সিআইএল (কমান্ড লাইন ইন্টারফেস) হতে পারে।
sh (বোর্ন শ এল) ইউনিক্স / ইউনিক্স-এর মতো অপারেটিং সিস্টেমের জন্য একটি শেল কমান্ড-লাইন ইন্টারপ্রেটার। এটি কিছু অন্তর্নির্মিত কমান্ড সরবরাহ করে। স্ক্রিপ্টিং ভাষায় আমরা অনুবাদক হিসাবে চিহ্নিত করি #!/bin/sh
। এটি অন্যান্য শেল যেমন বাশ (মুক্ত / উন্মুক্ত), কাশ (নিখরচায় নয়) দ্বারা বহুলভাবে সমর্থিত ছিল।
ব্যাশ ( বি ourne একটি লাভ গুলি জাহান্নাম) বোর্ন শেল জন্য একটি শেল প্রতিস্থাপন। বাশ হ'ল সুপার et বাশ সমর্থন করে পসিএক্স হ'ল পসিক্স-কমপ্লায়েন্ট সিস্টেমগুলি কীভাবে কাজ করা উচিত তা নির্ধারণ করে এমন মানগুলির একটি সেট। বাশ আসলে কোনও পসিক্স কমপ্লায়েন্ট শেল নয়। একটি স্ক্রিপ্টিং ভাষায় আমরা দোভাষী হিসাবে চিহ্নিত করি #!/bin/bash
।
সাদৃশ্য:
sh
(সুতরাং এটি ওওপি অর্থে একটি "সাবক্লাস") এবং এটি প্রসারিত করে (যাতে কার্যকারিতাটির একটি সুপারসেট থাকে)।
ইউনিক্স.কম থেকে পোস্ট
শেল বৈশিষ্ট্য
নীচে এই টেবিলটি সর্বাধিক বৈশিষ্ট্যগুলি তালিকাভুক্ত করে যা আমি মনে করি আপনাকে অন্য শেল বেছে নেবে। এটি একটি সুনির্দিষ্ট তালিকা হওয়ার উদ্দেশ্যে নয় এবং প্রতিটি সম্ভাব্য শেলের জন্য প্রতিটি একক সম্ভাব্য বৈশিষ্ট্য অন্তর্ভুক্ত করে না। অপারেটিং সিস্টেমের সাথে উপস্থিত সংস্করণে, বা যদি এটি সরাসরি স্ট্যান্ডার্ড বিতরণ থেকে সংকলিত হিসাবে উপলভ্য থাকে তবে কোনও বৈশিষ্ট্যটি কেবল শেল হিসাবে বিবেচিত হবে। বিশেষত নীচে উল্লিখিত সি শেলটি সুনোস ৪ এ উপলভ্য *
কোড:
sh csh ksh bash tcsh zsh rc es
Job control N Y Y Y Y Y N N
Aliases N Y Y Y Y Y N N
Shell functions Y(1) N Y Y N Y Y Y
"Sensible" Input/Output redirection Y N Y Y N Y Y Y
Directory stack N Y Y Y Y Y F F
Command history N Y Y Y Y Y L L
Command line editing N N Y Y Y Y L L
Vi Command line editing N N Y Y Y(3) Y L L
Emacs Command line editing N N Y Y Y Y L L
Rebindable Command line editing N N N Y Y Y L L
User name look up N Y Y Y Y Y L L
Login/Logout watching N N N N Y Y F F
Filename completion N Y(1) Y Y Y Y L L
Username completion N Y(2) Y Y Y Y L L
Hostname completion N Y(2) Y Y Y Y L L
History completion N N N Y Y Y L L
Fully programmable Completion N N N N Y Y N N
Mh Mailbox completion N N N N(4) N(6) N(6) N N
Co Processes N N Y N N Y N N
Builtin artithmetic evaluation N Y Y Y Y Y N N
Can follow symbolic links invisibly N N Y Y Y Y N N
Periodic command execution N N N N Y Y N N
Custom Prompt (easily) N N Y Y Y Y Y Y
Sun Keyboard Hack N N N N N Y N N
Spelling Correction N N N N Y Y N N
Process Substitution N N N Y(2) N Y Y Y
Underlying Syntax sh csh sh sh csh sh rc rc
Freely Available N N N(5) Y Y Y Y Y
Checks Mailbox N Y Y Y Y Y F F
Tty Sanity Checking N N N N Y Y N N
Can cope with large argument lists Y N Y Y Y Y Y Y
Has non-interactive startup file N Y Y(7) Y(7) Y Y N N
Has non-login startup file N Y Y(7) Y Y Y N N
Can avoid user startup files N Y N Y N Y Y Y
Can specify startup file N N Y Y N N N N
Low level command redefinition N N N N N N N Y
Has anonymous functions N N N N N N Y Y
List Variables N Y Y N Y Y Y Y
Full signal trap handling Y N Y Y N Y Y Y
File no clobber ability N Y Y Y Y Y N F
Local variables N N Y Y N Y Y Y
Lexically scoped variables N N N N N N N Y
Exceptions N N N N N N N Y
উপরের টেবিলের চাবি।
এই শেলটি ব্যবহার করে Y বৈশিষ্ট্য সম্পন্ন করা যেতে পারে।
এন বৈশিষ্ট্য শেল উপস্থিত নেই।
এফ বৈশিষ্ট্যটি কেবল শেল ফাংশন প্রক্রিয়া ব্যবহার করে করা যেতে পারে।
L এই বৈশিষ্ট্যটি সক্ষম করতে পঠনের পাঠাগারটি অবশ্যই শেলের সাথে যুক্ত থাকতে হবে।
উপরের টেবিলের নোটস
1. This feature was not in the original version, but has since become
almost standard.
2. This feature is fairly new and so is often not found on many
versions of the shell, it is gradually making its way into
standard distribution.
3. The Vi emulation of this shell is thought by many to be
incomplete.
4. This feature is not standard but unofficial patches exist to
perform this.
5. A version called 'pdksh' is freely available, but does not have
the full functionality of the AT&T version.
6. This can be done via the shells programmable completion mechanism.
7. Only by specifying a file via the ENV environment variable.
টার্মিনাল
শেল
এসএইচ বনাম। BASH
শুট আউট
BASH
রেফারেন্স উপাদান:
বিক্রয় gnu.org:
এর গোড়ায় শেলটি হ'ল ম্যাক্রো প্রসেসর যা কমান্ডগুলি কার্যকর করে। ম্যাক্রো প্রসেসর শব্দের অর্থ কার্যকারিতা যেখানে পাঠ্য এবং চিহ্নগুলি আরও বৃহত্তর এক্সপ্রেশন তৈরি করতে প্রসারিত করা হয়।
একটি ইউনিক্স শেল হ'ল কমান্ড ইন্টারপ্রেটার এবং প্রোগ্রামিং ভাষা উভয়ই। কমান্ড ইন্টারপ্রেটার হিসাবে, শেলটি জিএনইউ ইউটিলিটিগুলির সমৃদ্ধ সেটটিতে ব্যবহারকারী ইন্টারফেস সরবরাহ করে। প্রোগ্রামিং ভাষার বৈশিষ্ট্যগুলি এই ইউটিলিটিগুলিকে একত্রিত করার অনুমতি দেয়। কমান্ডযুক্ত ফাইলগুলি তৈরি করা যায় এবং সেগুলি নিজেরাই কমান্ডে পরিণত হতে পারে। এই নতুন কমান্ডগুলিতে / বিন এর মতো ডিরেক্টরিতে সিস্টেম কমান্ডের সমান স্থিতি রয়েছে, যা ব্যবহারকারী বা গোষ্ঠীগুলিকে তাদের সাধারণ কাজগুলি স্বয়ংক্রিয় করতে কাস্টম এনভায়রনমেন্ট স্থাপন করতে দেয়।
শেলগুলি ইন্টারেক্টিভ বা অ-ইন্টারেক্টিভভাবে ব্যবহার করা যেতে পারে। ইন্টারেক্টিভ মোডে, তারা কীবোর্ড থেকে টাইপ করা ইনপুট গ্রহণ করে। অ-ইন্টারেক্টিভভাবে কার্যকর করার সময়, শেলগুলি কোনও ফাইল থেকে পড়া কমান্ডগুলি কার্যকর করে।
একটি শেল সিএনক্রোনালি এবং অ্যাসিনক্রোনালি উভয়ভাবে জিএনইউ কমান্ড কার্যকর করতে দেয়। শেলটি আরও ইনপুট গ্রহণের আগে সিঙ্ক্রোনাস কমান্ডগুলি সম্পূর্ণ হওয়ার জন্য অপেক্ষা করে; অ্যাসিক্রোনাস কমান্ডগুলি শেলটির সমান্তরালে কার্যকর হতে থাকে যখন এটি অতিরিক্ত কমান্ডগুলি পড়ে এবং প্রয়োগ করে। পুনঃনির্দেশগুলি কমান্ডগুলির ইনপুট এবং আউটপুটটির সূক্ষ্ম দানযুক্ত নিয়ন্ত্রণের অনুমতি দেয়। তদতিরিক্ত, শেল কমান্ডের পরিবেশের বিষয়বস্তু নিয়ন্ত্রণ করতে দেয়।
শেলগুলি পৃথক ইউটিলিটিগুলির মাধ্যমে প্রাপ্ত অসম্ভব বা অসুবিধাগুলি কার্যকর কার্যকারিতা বাস্তবায়নের জন্য বিল্ট-ইন কমান্ডগুলির একটি বিল সেট (বিল্টিন) সরবরাহ করে । উদাহরণস্বরূপ, সিডি, ব্রেক, চালিয়ে যান এবং এক্সেল শেলের বাইরে প্রয়োগ করা যায় না কারণ এগুলি সরাসরি শেলটি নিজেই চালিত করে। ইতিহাস, গিওপ্টস, কিল, বা পিডব্লিউডি বিল্টইনগুলি অন্যগুলির মধ্যে পৃথক উপযোগে প্রয়োগ করা যেতে পারে তবে বিল্টিন কমান্ড হিসাবে এগুলি ব্যবহার করা আরও সুবিধাজনক। সমস্ত শেল বিল্টিনগুলি পরবর্তী বিভাগগুলিতে বর্ণিত হয়।
কমান্ডগুলি কার্যকর করা অপরিহার্য, শেলগুলির বেশিরভাগ শক্তি (এবং জটিলতা) তাদের এমবেডড প্রোগ্রামিং ভাষার কারণে। যে কোনও উচ্চ-স্তরের ভাষার মতো শেলটি ভেরিয়েবল, ফ্লো কন্ট্রোল কনস্ট্রাক্টস, কোটিং এবং ফাংশন সরবরাহ করে।
শেলগুলি প্রোগ্রামিংয়ের ভাষা বাড়ানোর পরিবর্তে ইন্টারেক্টিভ ব্যবহারের জন্য বিশেষভাবে গিরিযুক্ত বৈশিষ্ট্যগুলি সরবরাহ করে। এই ইন্টারেক্টিভ বৈশিষ্ট্যগুলির মধ্যে রয়েছে জব নিয়ন্ত্রণ, কমান্ড লাইন সম্পাদনা, কমান্ডের ইতিহাস এবং উপাধি। এই প্রতিটি বৈশিষ্ট্য এই ম্যানুয়ালটিতে বর্ণিত হয়েছে।
BASH gnu.org:
জিএনইউ অপারেটিং সিস্টেমের জন্য বাশ হ'ল শেল বা কমান্ড ল্যাঙ্গুয়েজ ইন্টারপ্রেটার। নামটি 'বোর্ন-অগেইন শেল' এর সংক্ষিপ্ত রূপ, বর্তমান ইউনিক্স শেল সি-এর সরাসরি পূর্বপুরুষের লেখক স্টিফেন বোর্নের একটি পাট, যা ইউনিক্সের সপ্তম সংস্করণ বেল ল্যাবস গবেষণা সংস্করণে প্রকাশিত হয়েছিল।
বাশ মূলত sh এর সাথে সামঞ্জস্যপূর্ণ এবং কর্ন শেল ksh এবং সি শেল সিএসএস থেকে দরকারী বৈশিষ্ট্যগুলি অন্তর্ভুক্ত করে। এটি আইইইই পসিক্স শেল এবং আইইইই পসিক্স স্পেসিফিকেশন (আইইইই স্ট্যান্ডার্ড 1003.1) এর অংশের অংশ হিসাবে কার্যকর প্রয়োগ করার উদ্দেশ্যে to এটি ইন্টারেক্টিভ এবং প্রোগ্রামিং উভয় ব্যবহারের জন্য sh এর চেয়ে বেশি কার্যকরী উন্নতি সরবরাহ করে।
জিএনইউ অপারেটিং সিস্টেম সিএসএসের সংস্করণ সহ অন্যান্য শেল সরবরাহ করে, বাশ ডিফল্ট শেল । অন্যান্য জিএনইউ সফ্টওয়্যারগুলির মতো, ব্যাশও যথেষ্ট বহনযোগ্য। এটি বর্তমানে ইউনিক্স এবং অন্যান্য কয়েকটি অপারেটিং সিস্টেমের প্রায় প্রতিটি সংস্করণে চলে - এমএস-ডস, ওএস / ২ এবং উইন্ডোজ প্ল্যাটফর্মগুলির জন্য স্বতন্ত্র-সমর্থিত পোর্টগুলি বিদ্যমান।
অন্যান্য উত্তরগুলি সাধারণত বাশ এবং একটি পসিক্স শেল স্ট্যান্ডার্ডের মধ্যে পার্থক্য চিহ্নিত করে। যাইহোক, পোর্টেবল শেল স্ক্রিপ্টগুলি লেখার সময় এবং ব্যাশ সিনট্যাক্সে ব্যবহার করার সময়, সাধারণত বাশিজমের একটি তালিকা এবং সংশ্লিষ্ট বিশুদ্ধ POSIX সমাধান খুব কার্যকর। উবুন্টু বাশ থেকে ড্যাশ-এ ডিফল্ট সিস্টেম শেল হিসাবে স্যুইচ করলে এই তালিকাটি সংকলিত হয়েছে এবং এখানে পাওয়া যাবে: https://wiki.ubuntu.com/DashAsBinSh
তদ্ব্যতীত , চেকব্যাশিজম নামে একটি দুর্দান্ত সরঞ্জাম রয়েছে যা আপনার স্ক্রিপ্টে বাশিজমগুলির জন্য পরীক্ষা করে এবং আপনার স্ক্রিপ্টটি বহনযোগ্য that
এগুলি প্রায় অভিন্ন হলেও bash
এর আরও বৈশিষ্ট্য রয়েছে - sh
এটি (কম বেশি) একটি পুরানো সাবসেট bash
।
sh
প্রায়শই আসলটি বোঝায় Bourne shell
, যা পূর্বাভাস দেয় bash
( Bourne *again* shell
) এবং এটি 1977 সালে নির্মিত হয়েছিল But
শেলটি দিয়ে শুরু হওয়া #!/bin/sh
বা ব্যবহার করা স্ক্রিপ্টগুলি sh
সাধারণত পিছনের সামঞ্জস্যের জন্য এটি করে। যে কোনও ইউনিক্স / লিনাক্স ওএসের sh
শেল থাকবে। উবুন্টু sh
প্রায়শই অনুরোধ করে dash
এবং ম্যাকোস এ এটির একটি বিশেষ পসিক্স সংস্করণ bash
। এই শাঁসগুলি মান-সম্মতিজনক আচরণ, গতি বা পিছনের দিকে সামঞ্জস্যের জন্য পছন্দ করা যেতে পারে।
bash
মূলটির চেয়ে নতুন sh
, আরও বৈশিষ্ট্য যুক্ত করে এবং পিছনের সাথে সামঞ্জস্যপূর্ণ হতে চায় sh
। তত্ত্ব অনুসারে, sh
প্রোগ্রামগুলি চালু হওয়া উচিত bash
। bash
প্রায় সমস্ত লিনাক্স / ইউনিক্স মেশিনে উপলব্ধ এবং সাধারণত ডিফল্টরূপে ব্যবহৃত হয় - ম্যাকওএসের উল্লেখযোগ্য ব্যতিক্রম zsh
ক্যাটালিনা (10.15) হিসাবে ব্যবহৃত হয়। ডিফল্টরূপে ফ্রিবিএসডি bash
ইনস্টলড আসে না ।
sh
POSIX এর অনেক পূর্বে এই দিনগুলিতে, আপনি আশা করবেন যে sh
আপনি যে কোনওটিকে খুঁজে পান কমপক্ষে পসিক্স-সামঞ্জস্যপূর্ণ; তবে লিগ্যাসি সিস্টেমগুলিতে এটি কোনওভাবেই দেওয়া হয়নি। পসিক্স শেলের চেয়ে অনেক বেশি স্ট্যাডার্ডাইজ করে; প্রকৃতপক্ষে, আপনি তর্ক করতে পারেন যে অপারেটিং সিস্টেম কল এবং গ্রন্থাগার ফাংশনগুলির মানিককরণ আরও গুরুত্বপূর্ণ।
/bin/sh
বা একই প্রোগ্রাম হিসাবে প্রার্থনা করতে পারে না /bin/bash
।
sh
কমপক্ষে POSIX দ্বারা প্রয়োজনীয় বৈশিষ্ট্যগুলিকে সমর্থন করে (সঠিক বাস্তবায়ন অনুমান করে)। এটি এক্সটেনশনগুলিকেও সমর্থন করতে পারে।
bash
, "বোর্ন অ্যাগেইন শেল", sh প্লাস ব্যাশ-নির্দিষ্ট এক্সটেনশনের জন্য প্রয়োজনীয় বৈশিষ্ট্যগুলি কার্যকর করে। এক্সটেনশনের পুরো সেটটি এখানে বর্ণনার জন্য খুব দীর্ঘ এবং এটি নতুন প্রকাশের সাথে পরিবর্তিত হয়। পার্থক্যগুলি ব্যাশ ম্যানুয়ালটিতে নথিভুক্ত করা হয়েছে। info bash
"বাশ বৈশিষ্ট্যগুলি" বিভাগটি (বর্তমান সংস্করণে বিভাগ 6) টাইপ করুন এবং পড়ুন বা বর্তমান ডকুমেন্টেশন অনলাইনে পড়ুন ।
sh
যদি PATH
আপনার বর্তমান শেলটিতে সঠিকভাবে সেট আপ থাকে তবে কেবলমাত্র আপনাকে একটি পসিক্স শেল দেয় । কোনও সংজ্ঞায়িত PATH- নাম নেই যা আপনাকে একটি পসিক্স শেল দেয়।
sh
অগত্যা ছিল এমনকি আপনি যদি একটি POSIX শেল, সোলারিস উপর, উদাহরণস্বরূপ দেয়।
বাশ এবং শ দুটি আলাদা শাঁস। মূলত বাশ শ, আরও বৈশিষ্ট্য এবং আরও ভাল সিনট্যাক্স সহ is বেশিরভাগ কমান্ড একই কাজ করে তবে সেগুলি আলাদা। ব্যাশ (বাশ) অনেকগুলি উপলভ্য (এখনও সর্বাধিক ব্যবহৃত) ইউনিক্স শেলগুলির মধ্যে একটি। বাশ বলতে বোঝায় "বোর্ন অ্যাগেইন শেল" এবং এটি মূল বোর্ন শেল (শে) এর প্রতিস্থাপন / উন্নতি।
শেল স্ক্রিপ্টিং যে কোনও শেলের মধ্যে স্ক্রিপ্টিং হয়, যেখানে ব্যাশের জন্য স্ক্রিপ্টিং বিশেষত স্ক্রিপ্ট হয়। অনুশীলনে, তবে, "শেল স্ক্রিপ্ট" এবং "ব্যাশ স্ক্রিপ্ট" প্রায়শই আন্তঃবিস্মরণীয়ভাবে ব্যবহৃত হয়, যদি না প্রশ্নটিতে থাকা শেলটি বাশ না করে।
এটি বলার পরে, বেশিরভাগ সিস্টেমে আপনার / বিন / শ অনুধাবন করা উচিত একটি প্রতীকী লিঙ্ক এবং এইচ.কে. উবুন্টু / বিন / এস-এ ব্যাশের সাথে লিঙ্ক ব্যবহার করা হত, লিনাক্স বিতরণে সাধারণ আচরণ, তবে এখন ড্যাশ নামে অন্য শেলের সাথে সংযোগ স্থাপনে পরিবর্তিত হয়েছে। আমি বাশ ব্যবহার করব, কারণ এটি বেশ মানক (বা আমার অভিজ্ঞতা থেকে কমপক্ষে সাধারণ)। প্রকৃতপক্ষে, সমস্যাগুলি দেখা দেয় যখন কোনও ব্যাশ স্ক্রিপ্ট #! / বিন / শ ব্যবহার করবে কারণ স্ক্রিপ্ট-নির্মাতা ধরে নিচ্ছে লিঙ্কটি যখন ব্যাশ করার দরকার নেই তখন তা করা দরকার।
যতটা সম্ভব পার্থক্যগুলি: একটি প্রাথমিক বোঝার পরে, উপরে পোস্ট করা অন্যান্য মন্তব্যগুলি ধরা সহজ হবে।
শেল - "শেল" একটি প্রোগ্রাম, যা ব্যবহারকারী এবং অপারেটিং সিস্টেমের (কার্নেল) মধ্যে মিথস্ক্রিয়াটিকে সহজতর করে। Sh, bash, csh, zsh ... ইত্যাদির মতো অনেকগুলি শেল বাস্তবায়ন উপলব্ধ।
শেল প্রোগ্রামগুলির যে কোনও একটির সাহায্যে আমরা সেই শেল প্রোগ্রাম দ্বারা সমর্থিত কমান্ডগুলি কার্যকর করতে সক্ষম হব।
ব্যাশ - এটি থেকে প্রাপ্ত বি ourne- একটি লাভ Sh ইএলএল। এই প্রোগ্রামটি ব্যবহার করে, আমরা শেল দ্বারা নির্দিষ্ট সমস্ত কমান্ড কার্যকর করতে সক্ষম হব। এছাড়াও, আমরা এই প্রোগ্রামটিতে বিশেষভাবে যুক্ত হওয়া কয়েকটি কমান্ড কার্যকর করতে সক্ষম হব। শের সাথে বাশের পিছনে সামঞ্জস্য রয়েছে।
শ - এটি বোর্ন শ থেকে প্রাপ্ত এল । "sh" শেলটিতে উল্লিখিত সমস্ত কমান্ডকে সমর্থন করে। মানে, এই প্রোগ্রামটি ব্যবহার করে, আমরা শেল দ্বারা নির্দিষ্ট সমস্ত কমান্ড কার্যকর করতে সক্ষম হব।
আরও তথ্যের জন্য, করুন: - https://man.cx/sh - https://man.cx/bash
লিনাক্স অপারেটিং সিস্টেম বিভিন্ন ধরণের শেল সরবরাহ করে। যদিও শেলগুলিতে প্রচুর কমান্ড রয়েছে তবে প্রতিটি ধরণের স্বতন্ত্র বৈশিষ্ট্য রয়েছে। আসুন বিভিন্ন ধরণের বেশিরভাগ ব্যবহৃত শেল অধ্যয়ন করি।
এস শেল:
Sh শেল বোর্ন শেল নামেও পরিচিত। এস শেল হ'ল এটিিক্স এবং টি এর বেল ল্যাবগুলিতে 1977 সালে স্টিফেন বোর্নের দ্বারা ইউনিক্স কম্পিউটারগুলির জন্য বিকাশ করা প্রথম শেল It এতে অনেক স্ক্রিপ্টিং সরঞ্জাম অন্তর্ভুক্ত রয়েছে।
বাশ শেল:
বাশ শেলটি বোর্ন অ্যাগেইন শেলকে বোঝায়। বেশিরভাগ লিনাক্স বিতরণে শ্যাশটি ডিফল্ট শেল এবং শ শেলের বিকল্প (শেল শ্যাশও ব্যাশ শেলটিতে চলবে)। বাশ শেল সংশোধন ছাড়াই শেল স্ক্রিপ্টের বিশাল সংখ্যাগরিষ্ঠ কার্যকর করতে পারে এবং কমান্ড লাইন সম্পাদনা বৈশিষ্ট্যও সরবরাহ করতে পারে।