লগইন এবং নন-লগইন শেলগুলি কী কী?


78

বলা হয় যে লগইন শেল .bashrcফাইলের মধ্যে প্রবেশের জন্য সেটিংস এবং ফাইলগুলিতে লগইন শেল সেটিংস .profile

লগইন এবং নন-লগইন শেলগুলি আসলে কী বোঝায়?

যতদূর সম্ভব প্রযুক্তিগত জার্গন ব্যবহার না করে দয়া করে ব্যাখ্যা করুন।

উত্তর:


83

সহজভাবে করা:

  • আপনি যদি কোনও শেল বা টার্মিনাল খুলেন (বা একটিতে স্যুইচ করুন) এবং এটি আপনাকে কোনও প্রম্পট দেওয়ার আগে লগইন করতে (ব্যবহারকারী নাম? পাসওয়ার্ড?) জিজ্ঞাসা করে, এটি লগইন শেল।
  • যদি এটি ( জিনোম-টার্মিনালের মতো ) না হয়ে থাকে এবং আপনাকে সরাসরি এটি ব্যবহার করতে দেয় তবে এটি একটি লগ-ইন শেল।

আপনি যদি উবুন্টু ডেস্কটপের সাধারণ ব্যবহারকারী হন তবে একমাত্র লগইন শেলটিই ... আপনার ডেস্কটপ (আপনি প্রবেশের জন্য একটি পাসওয়ার্ড টাইপ করেন, ডান;)? ঠিক আছে, প্রযুক্তিগতভাবে এটি লগইন শেল যা একটি জিইউআই শুরু করে, তবে এটি জঞ্জাল হয়ে উঠছে। এবং হ্যাঁ, এটি সেটিংসটি পড়বে.profile

শুধুমাত্র সময় আপনি (একজন সাধারণ ব্যবহারকারী) সম্ভবত লগ-ইন শেল দেখতে হবে মনে হচ্ছে একটি লগইন শেল মত আপনি আপনার ডেস্কটপে সঙ্গে কিছু সমস্যা হচ্ছে এবং আপনার সাথে একটি ভার্চুয়াল টার্মিনালে সুইচ যদি Ctrl+ + Alt+ + F1শর্টকাট।


লগইন শেল থাকার জন্য অন্যান্য সাধারণ ক্ষেত্রে রয়েছে:

  • দূরবর্তী অবস্থান থেকে আপনার কম্পিউটার অ্যাক্সেস ssh(বা এর সাথে স্থানীয়ভাবে সংযোগ স্থাপন ssh localhost)
  • bash -l(বা sh -l) দিয়ে একটি প্রাথমিক লগইন শেল অনুকরণ
  • একটি প্রাথমিক rootলগইন শেল সঙ্গে অনুকরণsudo -i
    • বা অন্য অ- ব্যবহারকারীর জন্যsudo -u username -iroot
  • (এবং তাদের পাসওয়ার্ড) rootসহ অন্য অ- ব্যবহারকারী হিসাবে প্রমাণীকরণsu - username
  • sudo loginকমান্ড ব্যবহার করে ব্যবহারকারীর স্যুইচ করতে

যদি আমি টার্মিনাল থেকে আমার এক্লিপস আইডিইটি শুরু করি তবে এটি প্রত্যাশার মতো খুলে যায়, তবে যদি আমি এটি গ্রহণের আইকনটি ক্লিক করে এটি খোলার চেষ্টা করি তবে এটি জাভা অবস্থানটি সনাক্ত করতে অক্ষম (অন্যথায় জাভার জন্য PATH। প্রোফাইল ফাইল সেট না করা থাকলে)। তার মানে হল যে Eclipse আইকনে ক্লিক করার জন্য একটি লগইন শেল দরকার, কেন?
Uাকা

2
@ ডিউকি, না, এর অর্থ হ'ল আপনি যখন ডেস্কটপ / জিইউআই বনাম একটি সত্যিকারের কমান্ড-লাইন-কেবল কনসোল সিস্টেম ব্যবহার করছেন তখন পরিবেশের ভেরিয়েবলগুলি আলাদাভাবে সেট করা দরকার । আপনার পাঠ্য ইত্যাদি রাখুন ~/.pam_environment(কেবলমাত্র ভেরিয়েবল, সেখানে কোনও বাশ কমান্ড নেই!), লগআউট, লগইন করুন এবং ডেস্কটপের পাশাপাশি জিনোম-টার্মিনালে যাদুতে সমস্ত কিছু দেখুন!
ইশ

1
Ssh এর মাধ্যমে লগইন কোনও লগইন শেলকে ডাকে না। এটি লোড হয় না /etc/profile, /etc/profile.dবা ~/.profile
xuhdev


@xuhdev লগইন এসএসএসের মাধ্যমে লগইন শেলটি ব্যবহার করে এবং এটি / ইত্যাদি / প্রোফাইল, /etc/profile.d এবং ~ / .bash_profile লোড করে।
মাইকেলজেড

9

আমি মনে করি না যে "প্রযুক্তিগত জার্গন" ছাড়াই সঠিক উত্তর দেওয়া যেতে পারে। যেহেতু "লগইন শেল কী" এই প্রশ্নের জন্য গুগলে এই প্রশ্নটি প্রথম পপ আপ করছে আমি নীচে আরও সঠিক উত্তর সরবরাহ করছি:

লগইন শেল হ'ল একটি শেল যা লগইন শেল বলে told এটি লগইন করার পরে যে শেলটি পপ আপ হয় তার অর্থ এটি নয় , যদিও সাধারণত অ্যাপ্লিকেশন যা আপনাকে লগইন করে শেলটিকে এটি লগইন শেল হতে বলে বলে telling শেলটি জানাতে নিম্নলিখিত উপায় রয়েছে যা এটি লগইন হওয়া উচিত:

  1. শেল দিয়ে চালানো -lবা --loginযুক্তি ধরে নিয়ে এটি এটি জানে (আমি এমন কোনও শেল জানি না যা জানি না -lতবে --loginকেবল কয়েকটি শেল দ্বারা সমর্থিত)।
  2. 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) চালু করবে কিনা তা নির্ধারণের জন্য কিছু পরীক্ষা করে ।


আমি দ্বিতীয় বিকল্পটিতে আগ্রহী: আমি বাশ আহ্বানের আগে (বা পরে) আরগভি [0] আসলে কীভাবে পরিবর্তন করতে পারি? কমান্ড লাইন থেকে এটি করা যেতে পারে?
ওয়েলহার্ডকোডার

@ ভেরিহার্ডকোডার এটি কমান্ডটি চালানোর জন্য আপনি যে অ্যাপ্লিকেশনটি ব্যবহার করছেন তার উপর নির্ভর করে। সি কোডে এটি সরাসরি ফাংশনগুলির argv[0]একটিতে সরবরাহ করা হয় exec*, প্রাকৃতিক এবং অনিবার্য: আপনি সর্বদা উভয়ই সরবরাহ করেন argv[0]এবং exec*কার্যপ্রণালী ব্যবহার করার সময় কমান্ডের জন্য চালিত পথটি আপনি কমান্ড রান argv[0]থেকে আলাদা হতে না চাইলেও ব্যবহার করেন। অন্যান্য ভাষা তাদের নিজস্ব উপায় সরবরাহ করে। বিশেষত বাশ ব্যবহারের অনুমতি দেয় exec -a new_argv0 bash, তবে এটি অবশ্যই বর্তমানে চলমান শেলটি আপনি যেভাবে সম্পাদনা করেছেন তা প্রতিস্থাপন করবে exec, সুতরাং আপনাকে সাবশেল ( (exec -a -zsh zsh))
জাইএক্স

ঠিক আছে বুঝেছি! প্রকৃতপক্ষে, এটি এমনকি সহজ উপায়ে করা যেতে পারে: (
এক্সিকিউটিএল

1
দুজনের মধ্যে কার্যকরী পার্থক্য কী? এটি কি কেবল বুলিয়ান পতাকা?
আলেক্সি

@ আলেক্সি মেইন ফাংশনাল পার্থক্য হ'ল শুরুতে ব্যবহৃত কনফিগারেশন ফাইলগুলির একটি সেট। $0, এবং, সম্ভবত অন্য কোনও কিছু (ভেরিয়েবল, সেটিং ইত্যাদি) সেট করা হয়েছে যাতে কনফিগারেশন ফাইলে শেলের লগনিটি সনাক্ত করা যায়, তবে কে প্রকৃতপক্ষে এটি সনাক্ত করতে বিরক্ত করে তাই এতে কোনও তফাত আসে? আমি এ সবই জানি.
ZyX
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.