ধারণাটি হ'ল কোনও ব্যবহারকারীর প্রতি হোস্টে (সর্বাধিক) একটি লগইন শেল থাকা উচিত। (সম্ভবত আমার বলা উচিত, প্রতি টার্মিনাল প্রতি হোস্টের জন্য একটি লগইন শেল - আপনি যদি একসাথে একাধিক টার্মিনালের মাধ্যমে কোনও হোস্টে লগইন করেন তবে আপনি একাধিক লগইন শেল রাখার প্রত্যাশা করবেন)) এটি সাধারণত (সর্বদা?) আপনি পাবেন প্রথম শেল would লগ ইন করার পরে (তাই নাম)। সুতরাং, এই স্কিমটি আপনাকে সেই ক্রিয়াগুলি নির্দিষ্ট করতে দেয় যা আপনি লগইন প্রতি একবারই ঘটতে চান এবং আপনি যখনই নতুন (ইন্টারেক্টিভ) শেল শুরু করেন তখন জিনিসগুলি আপনি ঘটতে চান।
সাধারণত, লগ ইন করার পরে আপনি চালিত প্রতিটি অন্যান্য শেল লগইন শেলের বংশধর (একটি সন্তানের সন্তানের একটি শিশু ...) হবে এবং সুতরাং লগইন শেল থেকে অনেক সেটিংস (পরিবেশের পরিবর্তনগুলি umask
, ইত্যাদি) উত্তরাধিকার সূত্রে প্রাপ্ত হবে । এবং, তদনুসারে, ধারণাটি হ'ল লগইন সূচনা ফাইলগুলি ( .login
, .profile
ইত্যাদি) উত্তরাধিকারসূত্রে সেটিংগুলি সেট করা উচিত এবং .bashrc
(বা অন্য যে কোনও কিছুই আপনি ব্যবহার করুন) যেগুলি ( set
,, shopt
এক্সপোর্ট করা শেল ভেরিয়েবল নয়) পরিচালনা করে ইত্যাদি)
আর একটি ধারণা হ'ল লগইন সূচনা ফাইলগুলি (এবং কেবলমাত্র তাদের) "ভারী উত্তোলন" করা উচিত, অর্থাত্ সংস্থান-নিবিড় ক্রিয়াকলাপ। উদাহরণস্বরূপ, আপনি যখনই লগ ইন করেছেন (আপনি কেবলমাত্র একটি অনুলিপি (উদাহরণ)) পটভূমিতে কিছু প্রক্রিয়া চলমান থাকতে পারেন। আপনি লগইন করার সময় কিছু স্থিতির তথ্য (যেমন, df
বা who
) প্রদর্শিত হতে পারে , তবে প্রতিবার নতুন ইন্টারেক্টিভ শেল শুরু করার সময় নয়। বিশেষত আপনার যদি ইন্টারেক্টিভ থাকেপ্রোগ্রাম / ডায়ালগ (যেমন, আপনার কাছ থেকে ইনপুট দাবি করে এমন একটি) যা আপনি যখনই লগইন করেন প্রতিবার চালাতে চান, আপনি যখনই নতুন শেল শুরু করবেন তখন আপনি সম্ভবত এটি চালাতে চান না। চরম উদাহরণ হিসাবে, বিশ বছর আগে সোলারিস আপনাকে একটি একক, অ-গ্রাফিকাল, উইন্ডোযুক্ত শেলটিতে লগ ইন করেছিল। (আমি বিশ্বাস করি যে এটির পরে এটির পরিবর্তিত হয়েছে) ) উইন্ডোটিং সিস্টেমটি চালু করা .login
বা .profile
(বা যাই হোক না কেন) কাজ ছিল , যেমন একটি কমান্ড দিয়ে startx
। (এটি আংশিকভাবে কার্যকর ছিল কারণ একাধিক উইন্ডোটিং সিস্টেম উপলব্ধ ছিল। বিভিন্ন ব্যবহারকারীর বিভিন্ন পছন্দ ছিল Some কিছু ব্যবহারকারী বিভিন্ন পরিস্থিতিতে বিভিন্ন সিস্টেম ব্যবহার করেছিলেন এবং আমাদের মধ্যে একটি ডায়ালগ ছিল .profile
যা "আপনি আজ কোন উইন্ডোটিং সিস্টেমটি ব্যবহার করতে চান?") জিজ্ঞাসা করেছিল স্পষ্টতই, আপনি যখনই নতুন উইন্ডো খুলবেন বা টাইপ করবেন তখনই আপনি এটি চালাবেন নাsh
।
যুগে যুগে আমি bash
প্রান্তের কেস বাদে অন্য কিছু ব্যবহার করেছি । (উদাহরণস্বরূপ, আমি স্ক্রিপ্টগুলি দিয়ে লিখি #!/bin/sh
, তাই কিছু সিস্টেমে আমার স্ক্রিপ্টগুলি চালিত হয় dash
এবং অন্যদের সাথে তারা bash
পসিক্স মোডে চালায় । আমি কীভাবে কিছু পরিচালনা করি তা দেখতে বছরে কয়েকবার csh
/ tcsh
কয়েক মিনিট চালনা করি বা কীভাবে একটি প্রশ্নের উত্তর দিন।) আপনি যদি প্রতিদিন একাধিক শেল (যেমন, bash
এবং zsh
) ব্যবহার করেন তবে আপনার ধরণগুলি আলাদা হতে পারে। যদি আপনার প্রাথমিক শেলটি (হিসাবে সংজ্ঞায়িত করা হয় /etc/passwd
) হয় bash
, আপনি zsh
লগইন শেলটি করতে চাইতে পারেন এবং তারপরে সম্ভবত কিছু ইন্টারেক্টিভ অ-লগইন zsh
শেলগুলি এর অধীনস্থ করতে অনুরোধ করতে পারেন। আপনার সম্ভবত একটি লগইন শেল থাকা এড়ানো উচিত যা একই ধরণের অন্য একটি লগইন শেলের অধীনস্থ।
লগইন শেল এবং নন-লগইন শেলের মধ্যে পার্থক্য হিসাবে উল্লেখ করা হয়েছে ? ওএস এক্স টার্মিনাল অ্যাপ্লিকেশনটি একটি লগইন শেল চালায়, তাই একজন সাধারণ ব্যবহারকারীর সাধারণত বেশ কয়েকটি "লগইন শেল" একই সাথে চলতে থাকে। এটি আমি উপরে বর্ণিত একটি থেকে কিছুটা আলাদা মডেল এবং ব্যবহারকারীর নিজের .login
বা তার মধ্যে কী কী তা পুনর্বিবেচনা করার প্রয়োজন হতে পারে.profile
(বা যাই হোক না কেন) ফাইল। ওএস এক্স বিকাশকারীরা এই নকশার সিদ্ধান্তের জন্য তাদের যুক্তি দলিল করেছে কিনা তা আমি জানি না। তবে আমি এমন একটি পরিস্থিতি কল্পনা করতে পারি যেখানে এটি কার্যকর হবে। এমন একটি সময় ছিল যখন আমি লগ ইন করার সময় অভ্যাসগতভাবে কয়েকটি মুঠো শেল উইন্ডো খুলতাম এবং আমি কোনটি ছিল তা ট্র্যাক রাখতে সহায়তা করতে আমি তাদের বিভিন্ন পাঠ্য এবং পটভূমির রঙগুলিতে (স্ক্রিনে এএনএসআই এস্কেপ সিকোয়েন্স লিখে) সেট করে দিতাম। টার্মিনাল রঙগুলি এমন কিছুর উদাহরণ যা বাচ্চাদের সন্তানদের দ্বারা উত্তরাধিকার সূত্রে প্রাপ্ত হয় না, তবে এটি একটি উইন্ডোতে অবিচল থাকে। সুতরাং আপনি প্রতিটি নতুন টার্মিনাল উইন্ডোটি শুরু করার সময় প্রতিটা কাজটি করতে চাইছেন তবে প্রতিবার নতুন ইন্টারেক্টিভ শেলটি শুরু করার সময় নয় start