আমাদের কেন লগইন, নন-লগইন, ইন্টারেক্টিভ এবং অ-ইন্টারেক্টিভ বাশ শেল রয়েছে?


23

সুতরাং ব্যাশ ম্যান পৃষ্ঠাগুলি লগইন এবং ইন্টারেক্টিভ শেলগুলি কী তা ব্যাখ্যা করে:

লগইন শেল এমন একটি যার আর্গুমেন্ট শূন্যের প্রথম অক্ষর হ'ল - বা লোগো বিকল্পটি দিয়ে শুরু করা।

একটি ইন্টারেক্টিভ শেলটি হ'ল নন-বিকল্প যুক্তি ছাড়াই এবং -c বিকল্প ছাড়াই যার স্ট্যান্ডার্ড ইনপুট এবং ত্রুটি উভয়ই টার্মিনালের সাথে সংযুক্ত (ইসটিটি (3) দ্বারা নির্ধারিত), বা একটি -i বিকল্প দিয়ে শুরু হয়েছিল। পিএস 1 সেট করা হয়েছে এবং i - এতে বাশ ইন্টারেক্টিভ থাকলে আমি শেল স্ক্রিপ্ট বা একটি স্টার্টআপ ফাইলকে এই অবস্থার পরীক্ষা করার অনুমতি দেয় includes

আমি মনে করি এর অর্থ আমাদের 4 টি বিভিন্ন ধরণের শাঁস থাকতে পারে:

  • ইন্টারেক্টিভ লগইন শেল,
  • অ-ইন্টারেক্টিভ লগইন শেল,
  • ইন্টারেক্টিভ অ লগইন শেল,
  • অ-ইন্টারেক্টিভ অ লগইন শেল

তবে কেন আমাদের প্রথম ইন্টারেক্টিভ / অ-ইন্টারেক্টিভ এবং লগইন / নন-লগইন শেল রয়েছে? বিভিন্ন কেন? আমাদের যদি কেবল এক ধরণের শেল থাকে তবে আমরা কী হারাব?

এছাড়াও আমি চালানোর মাধ্যমে লগইন শেলটিতে আছি কিনা তা নির্ধারণের চেষ্টা করার সময় echo $-এটি আউটপুট দেয়:

himBH

এই পতাকার কিছু ব্যাখ্যা করা হয়েছে এখানে , কিন্তু h, Hএবং mব্যাখ্যা করেছেন নেই। এমন কোনও স্থান আছে যা এই সমস্ত পতাকা বর্ণনা করে?

উত্তর:


21

শেলগুলির বিভিন্ন "ধরণের" সম্পর্কে এটি আমার ধারণা - দুর্ভাগ্যক্রমে আমি প্রথম থেকেই আন * এক্স এর উত্থান প্রত্যক্ষ করি নি (আমি ধারণা করি এই ধারণাটি icallyতিহাসিকভাবে একটি ভাল প্রসারিত হয়ে উঠেছে), তাই দয়া করে সমালোচনা করুন।

  • আমি যখন কোনও সিস্টেমে লগইন করি (আজকাল গ্রাফিকাল এক্স লগইনের মাধ্যমে) তখন কিছু কাজ হতে পারে যা একবার চালানো উচিত, উদাহরণস্বরূপ কোনও সার্ভারের সাথে একটি সংযোগ স্থাপন করুন, আমাকে আজকের টোডো তালিকা উপস্থাপন করুন, কিছু কমান্ড অটোস্টার্ট করুন ইত্যাদি। প্রতিবার নতুন টার্মিনালটি খুললে খুশি হওয়া উচিত নয়। সুতরাং কনফিগার ফাইলগুলির একটি সেট রয়েছে ( এবং এরপরে /etc/profile, ~/.bash_loginসঠিক তালিকার জন্য ম্যানুয়ালটি দেখুন) কেবল লগইন শেল দ্বারা উত্সাহিত ।
  • তদনুসারে, সংযোগগুলি বন্ধ করতে, কয়েকটি প্রোগ্রামকে হত্যা ~/.bash_logoutকরতে, লগইন শেল উপস্থিত থাকলে সেখানে একটি ব্যাকআপ স্ক্রিপ্ট চালান ।
  • সুতরাং, আমি টার্মিনালে "সাধারণ" শেলটি ব্যবহার করি, লগইন শেলটি ব্যবহার করা উচিত নয় , তবে তবুও আমার ব্যক্তিগত পছন্দগুলি পড়া উচিত ~/.bashrc, কারণ আমি চাইছি আমার কী-বাইন্ডিংগুলি শেলের সাথে যোগাযোগ করবে - সুতরাং এটি একটি ইন্টারেক্টিভ, অ- লগইন শেল
  • এবং শেষটি, তবে বাশ যখন স্ক্রিপ্টিংয়ের জন্য ব্যবহৃত হয়, তবে এর কোনওটিই গুরুত্বপূর্ণ নয়। bashএটি যত দ্রুত সম্ভব শুরু করা উচিত, অর্থাৎ কোনও কনফিগার ফাইলগুলি পড়া উচিত নয়। এটি একটি অ ইন্টারেক্টিভ, অ-লগইন শেল

সুতরাং, আপনার প্রশ্নের আমার উত্তরটি যদি আমাদের কেবল এক ধরণের শেল থাকে তবে আমরা কী হারাব? এক কথায়: "নমনীয়তা"।


আপনার দ্বিতীয় প্রশ্নের উত্তর সহজ:

$-বিকল্পের বর্তমান সেটটি তালিকাভুক্ত করে। এগুলি হয় কমান্ড লাইন পরামিতি দ্বারা bashবা setবিল্টিনের মাধ্যমে সেট করা যেতে পারে । সুতরাং আপনাকে ম্যানুয়ালটিতে দুটি জায়গার দিকে নজর দিতে হবে:

  • OPTIONS অধ্যায়:

    -i        If the -i option is present, the shell is interactive.
  • SHELL BUILTIN COMMANDSবিভাগ, অনুচ্ছেদ set:

    -h      Remember the location of commands as they are looked up for execution.  This is enabled by default.
    -m      Monitor  mode.  Job control is enabled.  This option is on by default for interactive shells on systems that sup
            port it (see JOB CONTROL above).  Background processes run in a separate process  group  and  a  line  containing
            their exit status is printed upon their completion.
    -B      The shell performs brace expansion (see Brace Expansion above).  This is on by default.
    -H      Enable !  style history substitution.  This option is on by default when the shell is interactive.

1
ওহ, আমি বিশ্বাস করি যে ওপি-র স্পষ্ট সূত্রযুক্ত প্রশ্নের উত্তর এমপি উত্তর সফলভাবে কিছু উপকারী সংজ্ঞা সফল করতে সক্ষম। যে সম্পর্কে: সুতরাং, একটি লগ-ইন শেল ঠিক লগইন শেল একটি উপসেট হয়?
tuk0z
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.