বাশ স্ক্রিপ্টে কমান্ড এবং টার্মিনালে কমান্ডের মধ্যে পার্থক্য


13

আপনি টার্মিনালটিতে টাইপ করা কমান্ড এবং স্ক্রিপ্টে অন্তর্ভুক্ত কমান্ডগুলির মধ্যে কি কোনও পার্থক্য রয়েছে?


একেবারে বোবা প্রশ্ন নয়! পরীক্ষা করে দেখুন এই তারপর (প্রথম), এই , এবং এই
ইমানুয়েল বার্গ

উত্তর:


7

আপনার টার্মিনালটি একটি শেল চালায় (সম্ভবত সম্ভবত bash), এটিই আপনার আদেশগুলি জিজ্ঞাসা করে এবং সেগুলি চালায়।

এই ইন্টারেক্টিভ মোড ছাড়াও আপনি কোনও ফাইল থেকে কমান্ড চালাতে আপনার শেলটি ব্যবহার করতে পারেন। আপনার ফাইলে কমান্ডগুলি কার্যকর করতে আপনি শেলটিকে সরাসরি পছন্দ bash scriptকরতে পারেন অথবা আপনি একটি "শেবাং" দিয়ে আপনার ফাইলটি শুরু করতে পারেন #!/bin/bashএবং এটি কার্যকর করতে ( chmod +x script) কার্যকর করতে পারেন । তারপরে আপনি স্ক্রিপ্টটিকে বাইনারিগুলির মতো আচরণ করতে পারেন এবং উদাহরণস্বরূপ এটি কার্যকর করতে পারেন ./scriptবা আপনি যেখানে শেলটি খুঁজছেন সেখানে এটি স্থাপন করতে পারেন। ( echo $PATH)

সম্ভবত আপনার ইন্টারেক্টিভ শেল এবং চালানোর জন্য ব্যবহৃত শেল উভয়ই bash। "প্রথম দিন শেখার লিনাক্স" এর দৃষ্টিকোণ থেকে বাশ উভয় মোডে ঠিক একই রকম কাজ করে। - অনেক পরে আপনি সামান্য পার্থক্য সম্পর্কে হোঁচট খেতে পারেন। আপনি যদি সত্যিই বিস্তারিতভাবে জানতে চান তবে আমি man bash"ইন্টারেক্টিভ" উল্লেখ করে স্থানগুলি পড়ার এবং অনুসন্ধান করার পরামর্শ দেব । (আপনি চেপে কোনও ম্যান পেজ সন্ধান করতে পারেন /))

একটি গুরুত্বপূর্ণ বিষয় লক্ষণীয় হ'ল স্ক্রিপ্টটি একটি নতুন প্রক্রিয়া হিসাবে চালিত হয়। এর বিশেষত অর্থ হ'ল স্ক্রিপ্টে সেট করা ভেরিয়েবলগুলি কলিং শেলটিতে দৃশ্যমান নয়।

$ export a=1
$ echo $a
1
$ bash -c 'echo $a;a=2;echo $a' # change the value in a script
1
2
$ echo $a # value not changed here
1
$ 

রফতানি ব্যতীত aঅভ্যন্তরীণ লিপিটিও দৃশ্যমান হয় না।


1

সাধারণভাবে, উত্তরটি "না" হবে, শেলের কমান্ডগুলি স্ক্রিপ্টগুলিতে, সিনট্যাক্স এবং শব্দার্থবিজ্ঞানের ক্ষেত্রে একই।

তবে পরিবেশের কনফিগারেশনের সাথে সম্পর্কিত কিছু সংক্ষিপ্ত সূক্ষ্মতা রয়েছে (কোন ভেরিয়েবলগুলি ব্যবহৃত হয় এবং সেগুলি কী সেট হয়)।

  • Linux এর জন্য পছন্দের ইন্টারেক্টিভ শেল ব্যাশ, কিন্তু স্ক্রিপ্টিং প্রায়ই অন্যান্য দোভাষী ব্যবহার ( shযার মধ্যে একটি পূর্বসুরী হয় bash, kshযা ব্যাশ সঙ্গে সমাবস্থা হয়), তাই আপনি কি শেল ব্যবহার করা হয় একাউন্টে নিতে হবে (বর্তমান শেল নাম traditionতিহ্যগতভাবে পরিবর্তনশীলতে রাখা হয় SHELL, টাইপ করার চেষ্টা করুন echo $SHELL)।

  • ইন্টারেক্টিভ সেশনের জন্য এবং স্ক্রিপ্ট প্রয়োগের জন্য একই দোভাষী সংযোগের ক্ষেত্রে পার্থক্য থাকতে পারে।


-1

স্ক্রিপ্ট হ'ল কমান্ডগুলির একটি তালিকা যা আপনি টার্মিনালে টাইপ করতে পারেন।

আপনি টার্মিনালে কোনও স্ক্রিপ্টের সম্পূর্ণতা পেস্ট করতে পারেন এবং ফলাফলটি এটি চালানোর মতো হবে।

বিপরীতভাবে, আপনি কোনও ফাইলের ভিতরে আপনার টার্মিনাল কমান্ডগুলি "সংরক্ষণ" করতে পারেন এবং এটিকে পুনরায় ব্যবহারযোগ্য স্ক্রিপ্টে পরিণত করতে পারেন এবং এটি আপনার পরিবার এবং বন্ধুদের সাথে ভাগ করে নিতে পারেন।


4
না। বিষয়বস্তু আটকানো স্ক্রিপ্টটি সোর্স করার সমতুল্য। এটি বর্তমান শেলটিতে সমস্ত ধরণের বিকল্প পরিবর্তন করবে, যা কেবল স্ক্রিপ্ট চালিয়ে পরিবর্তন করা হবে না।
মিচাস

আপনি সঠিক. তবে তার প্রশ্ন যতদূর যায়। আমি মনে করি আমরা বলতে পারি এটি বেশ অনুরূপ। তবে হ্যাঁ, মাইখরা কী বলেছিল তার অনুবাদে oo স্ক্রিপ্টের বিষয়বস্তু আটকানো সমান source script_file। যা বর্তমান প্রসঙ্গে ENV vars সম্পাদনা করবে। স্ক্রিপ্টটি চালনার সময় যেমন ./script_fileENV পরিবর্তন করবে না, যদি না exportস্পষ্টভাবে ব্যবহৃত হয়।
ম্যাথিউ জে

1
না। এমনকি exportস্ক্রিপ্টের পক্ষে কলিং শেলের যে কোনও ভেরিয়েবল সংশোধন করা সম্ভব নয়। পিডাব্লুডি, সংজ্ঞায়িত উপকরণ, ফাংশন এবং এর মতো জিনিসগুলির ক্ষেত্রেও একই জিনিস রয়েছে। এগুলি কেবল ইন্টারেক্টিভ বা একটি ফাইল সোর্স করে পরিবর্তন করা যেতে পারে। তবে হ্যাঁ, এটি সম্ভবত প্রথম দিনেই কেউ হোঁচট খাবে না। :)
মিচাস

1
@ মিমাস: ঠিক আছে, সঠিক বিবরণ দেওয়া আরও ভাল। যদি শিক্ষানবিশ উচ্চাভিলাষী হয় এবং কাজের অভ্যাস থাকে তবে সে বা সে খুব দ্রুত গ্রহণ করবে। যদি আমরা সন্তানের গল্পটি বলার চেষ্টা করি, আমরা কেবল আমাদের পায়ে হোঁচট খাব এবং একটি বোধগম্য ধারণা তৈরি করব - তদ্ব্যতীত, শিক্ষানবিশ পিছনে ফিরে আসতে পারে। যদিও আমি নিজেকে শিক্ষানবিস হিসাবে বিবেচনা করি না, এমন অনেকগুলি জিনিস রয়েছে যা আমি জানি না এবং আমার অপমান করা হবে যদি কেউ আমার প্রশ্নের উত্তর দেওয়া কিছু না থামায় কারণ "আপনি এখনও সেখানে নেই, জুনিয়র"।
ইমানুয়েল বার্গ
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.