আমি উবুন্টুতে খুব নতুন। আমি লোকদের "শেল স্ক্রিপ্টিং", "বাশ স্ক্রিপ্টিং" বলতে শুনি।
আমি ভাবছি তারা কি একই রকম? নাকি এগুলি আলাদা?
আমি উবুন্টুতে খুব নতুন। আমি লোকদের "শেল স্ক্রিপ্টিং", "বাশ স্ক্রিপ্টিং" বলতে শুনি।
আমি ভাবছি তারা কি একই রকম? নাকি এগুলি আলাদা?
উত্তর:
bash
ইউনিক্স শেলগুলি অনেকগুলি উপলভ্য (এখনও সর্বাধিক ব্যবহৃত) ব্যাশ ( )। বাশ বলতে বোঝায় " বি আর্নে এ লাভ এসএল এল", এবং এটি মূল বোর্ন শেল ( sh
) এর প্রতিস্থাপন / উন্নতি ।
শেল স্ক্রিপ্টিং যে কোনও শেলের মধ্যে স্ক্রিপ্টিং হয় , যেখানে ব্যাশ স্ক্রিপ্টিং বিশেষত বাশের জন্য স্ক্রিপ্ট হয়। অনুশীলনে, তবে, "শেল স্ক্রিপ্ট" এবং "ব্যাশ স্ক্রিপ্ট" প্রায়শই আন্তঃবিস্মরণীয়ভাবে ব্যবহৃত হয়, যদি না প্রশ্নটিতে থাকা শেলটি বাশ না করে।
সম্পাদনা: প্রকৃতপক্ষে, উবুন্টুতে ডিফল্ট স্ক্রিপ্টিং শেলটি ড্যাশ, যখন ডিফল্ট ইন্টারেক্টিভ শেল (আপনি যদি টার্মিনাল টানেন তবে যা পাবেন) বাশ is যাইহোক, দুটি পদ এখনও বেশিরভাগই বিনিময়যোগ্য।
/bin/sh
করতে সিমবলিক লিঙ্ক হয় /bin/dash
ডিফল্ট তোলে সিস্টেম শেল, কিন্তু এটা ডিফল্ট না স্ক্রিপ্টিং শেল অর্থাত, কোন লিখিত নিয়ম যে আপনি একেবারে ব্যবহার করতে হবে এর /bin/sh
। যখন কেউ /bin/sh
এটি ব্যবহার করে তখন বহনযোগ্য কারণে, যখন আপনি আপনার স্ক্রিপ্টটি একাধিক ইউনিক্সের মতো ওএস প্ল্যাটফর্মে ব্যবহার করার প্রত্যাশা করেন, যার বেশিরভাগই /bin/sh
পসিক্স-অনুগত, বোর্ন-ফ্যামিলি শেল।
ভূমিকা
শেল স্ক্রিপ্টিং এবং Bash
স্ক্রিপ্টিং একই জিনিস নয়, যেমন অন্যান্য শেল যেমন sh
একটি স্ক্রিপ্ট কার্যকর করতে ব্যবহার করা যেতে পারে; দ্বারা সম্পাদিত করার উদ্দেশ্যে একটি স্ক্রিপ্ট স্ক্রিপ্ট Bash
হিসাবে লেবেল করা উচিত Bash
। পদগুলি প্রায়শই আন্তঃবিদেশীয়ভাবে ব্যবহৃত হয় কারণ এর Bash
তুলনায় এর বর্ধিত কার্যকারিতা সহ sh
অনেকগুলি বিতরণে ব্যবহারকারী স্ক্রিপ্টগুলি কার্যকর করতে ব্যবহৃত হয় most তবে অন্যান্য শেল যেমন Korn (ksh)
, C shell (csh)
এবং এর মতো রয়েছে Z shell (zsh)
তবে আমরা উবুন্টুর সাথে এটির আলোচনা হিসাবে এখানে যাব না sh
এবং bash
এটি সবচেয়ে প্রাসঙ্গিক। এখানে একটি দুর্দান্ত আইবিএম নিবন্ধ লিনাক্সের শেলগুলির বিবর্তন সম্পর্কে আরও বিশদে যায় এবং শেল আর্কিটেকচার এবং শেলগুলি কীভাবে পৃথক হয় তা ভালভাবে বর্ণনা করে।
শেল স্ক্রিপ্টিং
Sh
স্টিফেন বোর্ন দ্বারা নির্মিত মূল ইউনিক্স শেলটি ছিল; তবে ডেবিয়ান ভিত্তিক সিস্টেম এবং উবুন্টু dash
তাদের sh
শেল হিসাবে বিবেচনা করে ( sh
এটি আসলে সংলগ্ন dash
)। ডেবিয়ান এবং উবুন্টুতে, গতির কারণে sh
, এটি প্রায়শই সমালোচনামূলক সিস্টেম পদ্ধতি এবং প্রারম্ভকালে কী স্ক্রিপ্টগুলি সম্পাদন করতে ব্যবহৃত হয়; আরও বিশদের জন্য উবুন্টু উইকি দেখুন । Bash
বোর্ন আবার শেল জন্য দাঁড়িয়ে ব্রায়ান ফক্স পরবর্তী উন্নত ছিল এবং অনেক মূল বাড়ানো sh
। ফক্স এবং অন্যদের বিকাশ Bash
জিএনইউ প্রকল্পের একটি গুরুত্বপূর্ণ অংশ ছিল। দেখুন এই ইতিহাস মহান আলোচনা Bash
আরও তথ্যের জন্য।
এটা খেয়াল করা জরুরী উভয় গুরুত্বপূর্ণ sh
এবং Bash
, যেমন উবুন্টু এবং অন্যান্য ডিস্ট্রিবিউশন ব্যবহার করা হয় POSIX
অনুবর্তী, যার মানে তারা কিভাবে কমান্ড শেল মধ্যে মৃত্যুদন্ড কার্যকর করা হয় সম্পর্কে মান একটি সংখ্যা সাবস্ক্রাইব। এটি ওএসে ব্যবহৃত স্ক্রিপ্টগুলির ফলাফলগুলি নির্ভরযোগ্যভাবে পূর্বাভাস দেওয়া যেতে পারে এবং শেলটির আচরণ সেই POSIX
পরামিতিগুলির মধ্যেই রাখা যেতে পারে তা নিশ্চিত করার জন্য এটি বিকাশকারীদের পক্ষে বিশেষত গুরুত্বপূর্ণ। মান সম্পর্কে আরও তথ্যের জন্য, সরকারী ডকুমেন্টেশন দেখুন ।
স্ক্রিপ্ট .sh
হিসাবে সম্পাদন করার উদ্দেশ্যে এবং bash
স্ক্রিপ্টের #!/bin/bash
শীর্ষে থাকা সত্ত্বেও প্রায়শই শেল স্ক্রিপ্টগুলির প্রত্যয় থাকে । এটা আসলে কোন ব্যাপার না স্ক্রিপ্ট বলা হয় কিনা script.sh বা my.script আসলে একটি কিনা ব্যাখ্যাকারী থেকে কল হয় /bin/sh
বা /bin/bash
। শেল স্ক্রিপ্টগুলি কমান্ড লাইনে sh
বা উভয় দিয়েও কল করা যেতে পারে bash
।
তবে, এটি লক্ষ করা গুরুত্বপূর্ণ যে ফলাফলগুলি যে কোন দোভাষীকে ডাকা হয় তার উপর নির্ভর করে পৃথক হতে পারে, কারণ সমস্ত bash
কমান্ড কাজ করবে না sh
, যেখানে বেশিরভাগ sh
কমান্ড কাজ করবে bash
। সাধারণভাবে, বেশিরভাগ ব্যবহারকারী /bin/bash
তাদের স্ক্রিপ্টগুলির জন্য ব্যবহার করতে চান যাতে তারা বর্ধিত বৈশিষ্ট্য সেটটির সুবিধা নিতে পারে; সিস্টেম স্ক্রিপ্টগুলি /bin/sh
প্রয়োজন হলে এটি কার্যকর করা যেতে পারে।
বাশ শেল স্ক্রিপ্টিংয়ের জন্য সংস্থানসমূহ
কখনও কখনও অনলাইনে দরকারী উত্সগুলি খুঁজে পাওয়া শক্ত হয় যা ভাল অনুশীলন অনুসরণ করে এবং এমন পরামর্শ দেয় যা আপনাকে দরকারী স্ক্রিপ্টগুলি তৈরি করতে দেয়। তারপরে man bash
, কিছু গুরুত্বপূর্ণ সংস্থান হ'ল গ্রেগের উইকি , বাশ হ্যাকার এবং স্টিভ পার্কারের শেল স্ক্রিপ্টিং সম্পর্কিত সাম্প্রতিক বই যা মূলত ফোকাস করে Bash
এবং ও'রিলি প্রকাশ করেছে। বাশ শুরুর গাইড দ্বারা একটি ভাল ভূমিকাও নেওয়া হয়েছিল ।
সেখানে উবুন্টু, মত জন্য উপলব্ধ একাধিক শেল হয় bash
, zsh
, ksh
, tcsh
এবং csh
।
সুতরাং যে কোনও সময় শেল বললে তিনি সেগুলির মধ্যে একটির কথা বলছেন। তবে এই শাঁস একে অপরের থেকে কিছুটা আলাদা fer সুতরাং, যখন কেউ bash
স্ক্রিপ্টিংয়ের বিষয়ে কথা বলেন , তিনি শেল ব্যবহার করছেন, কিন্তু যখন কেউ শেল স্ক্রিপ্টিংয়ের কথা বলছেন, তিনি ব্যবহার করছেন না bash
। তবে যেমন bash
উবুন্টুর স্ক্রিপ্টিংয়ে সাধারণত ব্যবহৃত হয়, তিনি সাধারণত হন। তদুপরি, বিভিন্ন শেল প্রচুর দিকগুলিতে সমান, তাই এটি সাধারণত কিছু যায় আসে না।
$ ls -l /bin/sh
lrwxrwxrwx 1 root root 4 Mar 29 11:53 /bin/sh -> dash*
$ ls -l /bin/dash
-rwxr-xr-x 1 root root 109768 Mar 29 11:53 /bin/dash*
$ ls -l /bin/bash
-rwxr-xr-x 1 root root 955024 Apr 3 08:58 /bin/bash*
এটি দেখায় যে 'শ' 'ড্যাশ' এর একটি সিমিলিঙ্ক, এবং উবুন্টুতে ডিফল্ট ইন্টারেক্টিভ শেল যা / বিন / বাশ, একটি এক্সিকিউটেবল যা / বিন / শ এর চেয়ে প্রায় 9 বার বড়।
প্রকৃতপক্ষে, 'ম্যান শ' (1590 লাইন) বনাম 'ম্যান বাশ' (5459 লাইন) প্রকাশ করে যে বাশ প্রচলিত 'শ' এর একটি বৃহত্তর সুপারসেট।
এখানে আরও পড়ুন:
শেল স্ক্রিপ্টটি একটি পোর্টেবিলিটি ওরিয়েন্টেড স্ক্রিপ্ট হিসাবে সংজ্ঞায়িত করা হবে যা POSIX- কমপ্লায়েন্ট ওএসগুলির একটি সিস্টেম শেল দ্বারা চালিত হতে পারে । সিনট্যাক্সটি পসিক্স স্ট্যান্ডার্ড দ্বারা সংজ্ঞায়িত শেল স্ক্রিপ্টিং ভাষার সিনট্যাক্সের সাথে অভিন্ন বা অনুরূপ হবে। লিনাক্স / ইউনিক্স / * বিএসডি ইত্যাদির মতো বেশিরভাগ পসিক্স সামঞ্জস্যপূর্ণ ওএসগুলির জন্য এটি স্ট্যান্ডার্ড Ope
উপরে বর্ণিত বিভিন্ন ওএসগুলি অ ইন্টারেক্টিভ ব্যবহারের জন্য বিভিন্ন শেল প্রয়োগ করে (যেমন সিস্টেম স্ক্রিপ্ট বা #! /bin/sh
শিবাং ব্যবহার করে এমন স্ক্রিপ্টগুলি কার্যকর করতে ) যা POSIX কমান্ড এবং বাক্য গঠন বাস্তবায়নের পাশাপাশি রয়েছে তাদের নিজস্ব এক্সটেনশন রয়েছে বা সম্ভবত কিছু কম দরকারী বৈশিষ্ট্য থেকে ছিটানো যেতে পারে পারফরম্যান্সের কারণে, তবে পসিক্স গ্রাউন্ডটি বিভিন্ন পসিক্স-কমপ্লায়েন্ট ওএসের জন্য নকশাকৃত স্ক্রিপ্টগুলির বহনযোগ্য পর্যায়ে বহনযোগ্যতার অনুমতি দেয়।
সর্বাধিক উপরোক্ত OSs পৃথক ইন্টারেক্টিভ শেল যা সাধারণত সম্পূর্ণরূপে বৈশিষ্ট্যযুক্ত হয় ব্যাশ । বাশ বেশিরভাগ অংশে পসিক্স-অনুগত, তবে অতিরিক্ত কমান্ডের একটি বড় পুল রয়েছে এবং বিভিন্ন সিনট্যাক্স সমর্থন করে। --Posix কমান্ড-লাইন বিকল্প দিয়ে বাশ শুরু করা বা বাশ চলাকালীন 'সেট-ও পসিক্স' কার্যকর করা বাশকে ডিফল্ট অঞ্চলে যেখানে পসিক্সের দ্বারা নির্দিষ্ট করা আচরণের সাথে মেলে সেটির আচরণের পরিবর্তন করে পসিক্স স্ট্যান্ডার্ডের সাথে আরও নিবিড়ভাবে মেনে চলবে ভিন্ন হয়, দেখুন: https://www.gnu.org/software/bash/manual/html_node/Bash-POSIX-Mode.html
শেলগুলির জন্য এক্সিকিউটেবল স্থাপনের অভিন্ন নিয়মগুলির জন্য ধন্যবাদ (তারা সাধারণত '/ বিন /' ডিরেক্টরিতে থাকে), শেল স্ক্রিপ্টগুলি তৈরি করার জন্য আমাদের অভিন্ন নিয়ম থাকতে পারে, আরও বিশেষত, আমরা শিবাং এক্সপ্রেশনটিতে কোন পয়েন্টটি নির্দেশ করতে হবে তা পরিষ্কার are স্ক্রিপ্টটি চালানোর জন্য একটি কার্যকর শেল কার্যকর করা যায়। ইউনিক্স / লিনাক্স / * বিএসডি ফাইল সিস্টেমগুলি এক্সটেনশানগুলিকে অভ্যন্তরীণভাবে সমর্থন করে না, সুতরাং ফাইল এক্সটেনশানগুলি কেবল অতিরিক্ত ইঙ্গিত হিসাবে, বা সূচীকরণের উদ্দেশ্যে পরিবেশন করে।
বিশেষত ডেবিয়ান / উবুন্টুতে, bin/sh
একটি সিমলিংক bin/dash
যা নির্দেশ করে যা ড্যাশ শেলের একটি নির্বাহযোগ্য । এটি সিস্টেম শেলকে ড্যাশ তৈরি করে, যা 4x দ্রুত বলে অনুমান করা হয় এবং আরও কার্যকরী বাশের চেয়ে 1 ডলারের আকার। উত্স: https://unix.stackexchange.com/questions/148035/is-dash-or-some-other-shell-faster-than-bash
Debian / Ubuntu- ইন্টারেক্টিভ টার্মিনাল অনেক অন্যান্য ইউনিক্সের মত অপারেটিং সিস্টেম, ব্যাশ, যার জন্য পথ এছাড়াও অভিন্ন হয় হিসাবে, ডিফল্টরূপে হল: /bin/bash
।
POSIX.1-2017 স্ট্যান্ডার্ড: http://pubs.opengroup.org/onlinepubs/9699919799/xrat/V4_xcu_chap02.html
যদি কোনও কমান্ড বা বিকল্পটি পসিক্স দ্বারা সংজ্ঞায়িত না
#! /bin/sh
হয় তবে প্রথমে এটি কোনও স্ক্রিপ্টে রাখবেন না।
আপনার স্ক্রিপ্টটি বাশ থেকে POSIX ফর্মে রূপান্তর করার জন্য আপনি নিজের শেল স্ক্রিপ্টের বাগগুলি স্বয়ংক্রিয়ভাবে পরীক্ষা করতে চাইতে পারেন বা প্যাসিক্সকে সামঞ্জস্যপূর্ণ করতে আপনার ব্যাশ স্ক্রিপ্টে কী পরিবর্তন করা উচিত তা দেখতে পারেন: