বাশ স্ক্রিপ্টিং কি শেল স্ক্রিপ্টিং এর মতো?


58

আমি উবুন্টুতে খুব নতুন। আমি লোকদের "শেল স্ক্রিপ্টিং", "বাশ স্ক্রিপ্টিং" বলতে শুনি।

আমি ভাবছি তারা কি একই রকম? নাকি এগুলি আলাদা?


উত্তর:


55

bashইউনিক্স শেলগুলি অনেকগুলি উপলভ্য (এখনও সর্বাধিক ব্যবহৃত) ব্যাশ ( )। বাশ বলতে বোঝায় " বি আর্নে লাভ এসএল এল", এবং এটি মূল বোর্ন শেল ( sh) এর প্রতিস্থাপন / উন্নতি ।

শেল স্ক্রিপ্টিং যে কোনও শেলের মধ্যে স্ক্রিপ্টিং হয় , যেখানে ব্যাশ স্ক্রিপ্টিং বিশেষত বাশের জন্য স্ক্রিপ্ট হয়। অনুশীলনে, তবে, "শেল স্ক্রিপ্ট" এবং "ব্যাশ স্ক্রিপ্ট" প্রায়শই আন্তঃবিস্মরণীয়ভাবে ব্যবহৃত হয়, যদি না প্রশ্নটিতে থাকা শেলটি বাশ না করে।

সম্পাদনা: প্রকৃতপক্ষে, উবুন্টুতে ডিফল্ট স্ক্রিপ্টিং শেলটি ড্যাশ, যখন ডিফল্ট ইন্টারেক্টিভ শেল (আপনি যদি টার্মিনাল টানেন তবে যা পাবেন) বাশ is যাইহোক, দুটি পদ এখনও বেশিরভাগই বিনিময়যোগ্য।


1
ড্যাশকে ডিফল্ট স্ক্রিপ্টিং শেল হিসাবে কী সংজ্ঞায়িত করে?
wjandrea

1
@wjandrea সত্য যে /bin/shকরতে সিমবলিক লিঙ্ক হয় /bin/dashডিফল্ট তোলে সিস্টেম শেল, কিন্তু এটা ডিফল্ট না স্ক্রিপ্টিং শেল অর্থাত, কোন লিখিত নিয়ম যে আপনি একেবারে ব্যবহার করতে হবে এর /bin/sh। যখন কেউ /bin/shএটি ব্যবহার করে তখন বহনযোগ্য কারণে, যখন আপনি আপনার স্ক্রিপ্টটি একাধিক ইউনিক্সের মতো ওএস প্ল্যাটফর্মে ব্যবহার করার প্রত্যাশা করেন, যার বেশিরভাগই /bin/shপসিক্স-অনুগত, বোর্ন-ফ্যামিলি শেল।
সের্গেই কলডিয়াজনি

29

ভূমিকা

শেল স্ক্রিপ্টিং এবং 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এবং ও'রিলি প্রকাশ করেছে। বাশ শুরুর গাইড দ্বারা একটি ভাল ভূমিকাও নেওয়া হয়েছিল ।


2
এই উত্তরটি আমার (গ্রহণযোগ্য উত্তর) থেকে আসলে উচ্চতর, আমার এইটির উত্তর দেওয়ার এক সপ্তাহ আগে এসেছিল।
হিল্টন শুমওয়ে

4

সেখানে উবুন্টু, মত জন্য উপলব্ধ একাধিক শেল হয় bash, zsh, ksh, tcshএবং csh

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


2
$ 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 লাইন) প্রকাশ করে যে বাশ প্রচলিত 'শ' এর একটি বৃহত্তর সুপারসেট।

এখানে আরও পড়ুন:


2

শেল স্ক্রিপ্টটি একটি পোর্টেবিলিটি ওরিয়েন্টেড স্ক্রিপ্ট হিসাবে সংজ্ঞায়িত করা হবে যা 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 ফর্মে রূপান্তর করার জন্য আপনি নিজের শেল স্ক্রিপ্টের বাগগুলি স্বয়ংক্রিয়ভাবে পরীক্ষা করতে চাইতে পারেন বা প্যাসিক্সকে সামঞ্জস্যপূর্ণ করতে আপনার ব্যাশ স্ক্রিপ্টে কী পরিবর্তন করা উচিত তা দেখতে পারেন:

https://www.shellcheck.net/

http://mywiki.wooledge.org/Bashism


1
খুব ভাল উত্তর, +1। AskUbuntu স্বাগতম!
সের্গেই কোলোডিয়াজনি

1
সংক্রান্ত যেমন / বিন / SH ড্যাশ উবুন্টু, সেখানে যা আপনার কাছে cite করতে চান তাদের জন্য একটি নিবন্ধ আছে। সেই সময় এর askubuntu.com/q/976485/295286
Sergiy Kolodyazhnyy
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.