উত্তর:
আপনি যদি উবুন্টু ডেস্কটপের সাধারণ ব্যবহারকারী হন তবে একমাত্র লগইন শেলটিই ... আপনার ডেস্কটপ (আপনি প্রবেশের জন্য একটি পাসওয়ার্ড টাইপ করেন, ডান;)? ঠিক আছে, প্রযুক্তিগতভাবে এটি লগইন শেল যা একটি জিইউআই শুরু করে, তবে এটি জঞ্জাল হয়ে উঠছে। এবং হ্যাঁ, এটি সেটিংসটি পড়বে.profile
শুধুমাত্র সময় আপনি (একজন সাধারণ ব্যবহারকারী) সম্ভবত লগ-ইন শেল দেখতে হবে মনে হচ্ছে একটি লগইন শেল মত আপনি আপনার ডেস্কটপে সঙ্গে কিছু সমস্যা হচ্ছে এবং আপনার সাথে একটি ভার্চুয়াল টার্মিনালে সুইচ যদি Ctrl+ + Alt+ + F1শর্টকাট।
ssh
(বা এর সাথে স্থানীয়ভাবে সংযোগ স্থাপন ssh localhost
)bash -l
(বা sh -l
) দিয়ে একটি প্রাথমিক লগইন শেল অনুকরণroot
লগইন শেল সঙ্গে অনুকরণsudo -i
sudo -u username -i
root
root
সহ অন্য অ- ব্যবহারকারী হিসাবে প্রমাণীকরণsu - username
sudo login
কমান্ড ব্যবহার করে ব্যবহারকারীর স্যুইচ করতে~/.pam_environment
(কেবলমাত্র ভেরিয়েবল, সেখানে কোনও বাশ কমান্ড নেই!), লগআউট, লগইন করুন এবং ডেস্কটপের পাশাপাশি জিনোম-টার্মিনালে যাদুতে সমস্ত কিছু দেখুন!
/etc/profile
, /etc/profile.d
বা ~/.profile
।
আমি মনে করি না যে "প্রযুক্তিগত জার্গন" ছাড়াই সঠিক উত্তর দেওয়া যেতে পারে। যেহেতু "লগইন শেল কী" এই প্রশ্নের জন্য গুগলে এই প্রশ্নটি প্রথম পপ আপ করছে আমি নীচে আরও সঠিক উত্তর সরবরাহ করছি:
লগইন শেল হ'ল একটি শেল যা লগইন শেল বলে told এটি লগইন করার পরে যে শেলটি পপ আপ হয় তার অর্থ এটি নয় , যদিও সাধারণত অ্যাপ্লিকেশন যা আপনাকে লগইন করে শেলটিকে এটি লগইন শেল হতে বলে বলে telling শেলটি জানাতে নিম্নলিখিত উপায় রয়েছে যা এটি লগইন হওয়া উচিত:
-l
বা --login
যুক্তি ধরে নিয়ে এটি এটি জানে (আমি এমন কোনও শেল জানি না যা জানি না -l
তবে --login
কেবল কয়েকটি শেল দ্বারা সমর্থিত)।argv[0]
সেটটি সহ শেল চালানো -{some_string}
(অর্থাত্ হায়ফেন-মাইনাস স্বাভাবিক argv[0]
বা অন্য কোনও স্ট্রিংয়ে প্রম্পেন্ড করা হয়েছে )। এটিই এসএসএস এবং সু কাজটি করে: su কেবল এক্সিকিউটেবল -su
হিসাবে চালায় argv[0]
(হ্যালো প্রত্যেকের মনে হ'ল argv[0]
চলমান এক্সিকিউটেবল নামটির সাথে কিছু করার আছে), ssh zsh চালায় -zsh
যখন ব্যবহারকারী /bin/zsh
তার শেল হিসাবে সেট করেছে ।শেলটির লগইনেসের সাথে আপনাকে কোনও পাসওয়ার্ড জিজ্ঞাসা করা বা অন্য কোনও অ্যান্টিফিকেশন প্রক্রিয়া সম্পাদন করা একেবারেই কিছুই করার থাকে না। কিছু প্রোগ্রাম যেমন ssh বা লগইন (বা urxvt এর মতো কিছু টার্মিনাল এমুলেটর) argv[0]
একটি হাইপেন-মাইনাস দিয়ে শুরু হওয়া লগইন হিসাবে শেল চালায় । সু বা -
সুডোর মতো কিছু (বা জেডএস: প্রাকদ্বন্দ্বী মোডেফায়ার্স বিভাগে বর্ণিত পূর্বসম্মত পরিবর্তনকারী দেখুন man zshmisc
) এটি ডিফল্টরূপে না করে তবে তা বলা যেতে পারে। কারও কাছে শেলকে তার আর্গুমেন্টটি (যেমন bash -l
) ব্যবহার করে লগইন হওয়ার একমাত্র বিকল্প রয়েছে : কমান্ড আর্গুমেন্টের সাহায্যে ssh (এটি স্পষ্টতই ssh কে দূরবর্তী প্রান্তে কী চালাতে হবে তা বলে দেয়)।
সাধারণত শেলটি আহ্বানের জন্য ব্যবহৃত প্রোগ্রামের ডকুমেন্টেশনের সাথে প্রথমে পরামর্শ নেওয়া ভাল যে শেলটি লগইন হবে কিনা এবং দ্বিতীয়টি অ্যাপটি লগইন শেল (যেমন যোগ echo
করে .profile
) চালু করবে কিনা তা নির্ধারণের জন্য কিছু পরীক্ষা করে ।
argv[0]
একটিতে সরবরাহ করা হয় exec*
, প্রাকৃতিক এবং অনিবার্য: আপনি সর্বদা উভয়ই সরবরাহ করেন argv[0]
এবং exec*
কার্যপ্রণালী ব্যবহার করার সময় কমান্ডের জন্য চালিত পথটি আপনি কমান্ড রান argv[0]
থেকে আলাদা হতে না চাইলেও ব্যবহার করেন। অন্যান্য ভাষা তাদের নিজস্ব উপায় সরবরাহ করে। বিশেষত বাশ ব্যবহারের অনুমতি দেয় exec -a new_argv0 bash
, তবে এটি অবশ্যই বর্তমানে চলমান শেলটি আপনি যেভাবে সম্পাদনা করেছেন তা প্রতিস্থাপন করবে exec
, সুতরাং আপনাকে সাবশেল ( (exec -a -zsh zsh)
)
$0
, এবং, সম্ভবত অন্য কোনও কিছু (ভেরিয়েবল, সেটিং ইত্যাদি) সেট করা হয়েছে যাতে কনফিগারেশন ফাইলে শেলের লগনিটি সনাক্ত করা যায়, তবে কে প্রকৃতপক্ষে এটি সনাক্ত করতে বিরক্ত করে তাই এতে কোনও তফাত আসে? আমি এ সবই জানি.