मैं चश कमांड के साथ शेल क्यों नहीं बदल पा रहा हूं?


12

मैंने एक नई कमांड सीखी, कम से कम मैंने सोचा, क्योंकि यह कमांड:, chshवर्णित की तरह व्यवहार नहीं करता है।

यह इस तरह काम करने के लिए वर्णित किया गया था:

  1. cat /etc/shells यह जानने के लिए कि कौन से गोले स्थापित हैं, इसलिए आप उनमें से चुन सकते हैं।
  2. यह echo $SHELLजानने के लिए कि आप किस शेल का उपयोग कर रहे हैं।
  3. किसी एक गोले को चुनें और टाइप करें chsh -s /path/to/shell
  4. पासवर्ड डालें और सत्यापित करें echo $SHELL, कि आप एक नए शेल में हैं।

मैंने ऐसा किया है और पासवर्ड दर्ज करते समय मुझे कोई त्रुटि संदेश नहीं मिला, लेकिन मैं अभी भी उसी शेल में था।

% echo $SHELL
/bin/bash
% cat /etc/shells
# /etc/shells: valid login shells
/bin/sh
/bin/dash
/bin/bash
/bin/rbash
% chsh -s /bin/sh
Password: 
% echo $SHELL
/bin/bash

5
आपको पहले लॉगआउट करना होगा और फिर से लॉगिन करना होगा।
रुई एफ रिबेरो

7
कृपया टर्मिनल टेक्स्ट की छवियाँ पोस्ट न करें। यह आपके प्रश्न के शरीर में कॉपी और पेस्ट किया जा सकता है, और जब तक आप एक ग्राफिकल गड़बड़ या कुछ समान नहीं दिखा रहे हैं, तब तक छवियों को पोस्ट करने की वास्तव में कोई आवश्यकता नहीं है।
सर्गी कोलोडियाज़नी


मैंने अपनी पोस्ट को संपादित किया, छवि को हटा दिया और पाठ को इसके बजाय चिपकाया, लेकिन रात को छवि वापस आ गई।
शार्क

@ शेखर ऐसा लग रहा है कि किसी ने एक समीक्षा कतार में एक संपादन किया था और इसे मंजूरी मिल गई, जिसने इस तथ्य के बाद आपके पोस्ट को संपादित किया। मैंने सोचा था कि एसई एडिट सिस्टम एक पुराने के साथ एक नया एडिट को अधिलेखित नहीं करेगा, लेकिन हे, कौन जानता है?
ज़ैन लिंक्स

जवाबों:


19

लॉग आउट करें और फिर से लॉग इन करें।

chshआदेश अपडेट करेगा /etc/passwdफ़ाइल, लेकिन यह परिवर्तन नहीं करता है वर्तमान खोल और न ही का मान $SHELLवर्तमान खोल में चर (यह है कि ऐसा करने का कोई तरीका नहीं है)। यही कारण है कि आपको फिर से लॉग इन करने की आवश्यकता है; प्रभावी होने के लिए आपको एक नया लॉगिन सत्र शुरू करना होगा।


मुझे यह समझ में नहीं आ रहा है कि लॉगिन शेल क्या है और मुझे कैसे पता चलेगा कि मैं लॉगिन शेल में हूं या किसी प्रकार का लॉगिन शेल नहीं है। मैं एक नया लॉगिन सत्र कैसे शुरू करूं?
शार्क

1
@ क्षारक बात यह है कि /etc/passwdजब आप अगली बार लॉग इन करते हैं, तो आपके द्वारा परिवर्तित की गई जानकारी को नहीं पढ़ा जाता है। प्रभावी होने के लिए आपको पूरी तरह से लॉग आउट करना होगा, और फिर से लॉग इन करना होगा। यदि आप ऐसा करने में विफल रहते हैं, तो मशीन को रिबूट करना भी काम करेगा।
Kusalananda

1
मुझे लगता है कि मैं आपको इस बार समझ रहा हूं: इसलिए chsh -s / path / to / shell कमांड तुरंत शेल को I में नहीं बदलता है, लेकिन यह अंदर प्रवेश / etc / passwd में बदलाव करता है जो शेल शुरू होने पर प्रभावी होगा?
शार्क

@ शेखर ठीक उसी तरह जिस तरह से यह काम करता है! मुझे खुशी है कि मैंने आपको गलत समझा। मैं जवाब अपडेट कर दूंगा।
Kusalananda

1

हमारे मामले में usermod उपयोगिता कमांड का उपयोग करना । Ubuntu 18.04 पर चल रहा है।

  1. सबसे पहले, वर्तमान मूल्य की जांच करें

grep nameofuser /etc/passwd

  1. बदल दें

sudo usermod --shell /bin/bash nameofuser

  1. इसे सत्यापित करें

grep nameofuser /etc/passwd

हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.