रनिंग चेश खोल को नहीं बदलता है


20

मैं अपने खोल को बाश से ज़श में बदलना चाहता हूँ।

मैंने उपयोगकर्ता झोल के रूप में लॉग इन करते हुए निम्नलिखित को चलाने की कोशिश की है:

$ chsh -s /bin/zsh
$ sudo chsh -s /bin/zsh zol
$ su -c 'chsh -s /bin/zsh zol'
# The above all results with:
$ password:
$ chsh: Shell not changed.

# zsh exists in /etc/shells.. 
chsh -l
/bin/sh
/bin/bash
/sbin/nologin
/bin/zsh

क्या गलत हो सकता है? मेरे द्वारा यह कैसे किया जा सकता है?


क्या आपने झोल के रूप में बिना किसी तर्क के 'chsh' चलाने की कोशिश की?
जॉर्ज एम

क्या आप ldap / nis आदि कुछ का उपयोग कर रहे हैं?
उलरिच डेंगल

अधिक महत्वपूर्ण बात: यह आपको अधिक जानकारी क्यों नहीं देता है? यह संदेश एक अनुभवी सिसोप के लिए ठीक हो सकता है, लेकिन ज्यादातर लोगों के लिए यह बिल्कुल अशिष्ट है। Im उसी समस्या का सामना 5 साल से कर रहा है, और लोगों को आश्चर्य है कि लिनक्स ने पिछले 20 वर्षों को डेस्कटॉप पर क्यों नहीं बिताया है।
flurbius

आपने अपने शेल को तुरंत बदलने की उम्मीद की थी? आप अपने लॉगिन शेल को बदल देते हैं chsh, जिसका अर्थ है कि आपको फिर से लॉग इन करना होगा।
Kusalananda

जवाबों:


18

जब आप जानकारी को बदलने का प्रयास करते हैं तो उपयोगकर्ता खाता संशोधनों को नहीं खोला जाएगा / आदि / पासवार्ड (vim / etc / passwd)।

वैकल्पिक: usermod (zol के रूप में) के साथ प्रयास करें:

$ usermod -s /bin/zsh 

या

$ sudo usermod -s /bin/zsh zol

यदि यह काम नहीं करता है, तो /etc/passwdहाथ से संपादित करें ।

sudo vipw
# set zol's shell to /bin/zsh
:wq

6
कृपया vipwइसके बजाय उपयोग करें vimक्योंकि वे उपयुक्त फ़ाइल लॉक सेट करते हैं।
उलरिच डेंगल

"यदि आपने खोला है / आदि / पासवार्ड" तो उपयोगकर्ता खाता संशोधन सहेजा नहीं जाएगा - लेकिन क्यों?
थानातोस

यह भी काम नहीं करता है। जब मैं लिनक्स वर्चुअल मशीन (सेंटोस 7) को पुनरारंभ करता हूं, तो यह अब ठीक है!
WeizhongTu

1

यदि आप "chsh -l" चलाना चाहते हैं, यदि आप देखें:

/usr/bin/zsh
/bin/zsh

फिर उपयोग करें:

chsh -s /usr/bin/zsh

चेतावनी: आदेशों को फेडोरा 25 पर चलाया गया था, ubuntun में विकल्प "-l" से बाहर है।


-lमेरे लिए एक अमान्य विकल्प है। मैं उबंटू में 16.04
byxor

क्षमा करें, मैं डिस्ट्रो के बारे में जानकारी नहीं देता जहां कमांड काम करते हैं। मेरे मामले में मैंने फेडोरा 25 पर परीक्षण किया। मैं ubuntu पर कोशिश करता हूं और मैं "-l" विकल्प को सत्यापित करता हूं।
लूर्केनकोक

भले ही, chsh -sपूरी तरह से काम किया। धन्यवाद।
ब्यूसर

विकल्प मंजूरो पर मान्य है, लेकिन यह अभी भी शेल को बदलने से इनकार करता है।
flurbius

0

यदि आप देखते हैं chsh: Shell not changed., तो इसका मतलब यह हो सकता है कि शेल पहले से ही बदल गया था।

जाँचें कि कौन सा शेल सूचीबद्ध है:

cat /etc/passwd | grep `cd; pwd`

यदि यह सही है, तो परिवर्तन प्रभावी होने के लिए लॉग आउट करें और वापस जाएं।


0

बस इसी में भाग गया। कोई फर्क नहीं पड़ता कि मैंने क्या लॉग इन किया था और वापस अपना शेल नहीं बदलेगा फिर भी इसे / etc / गोले और / etc / passwd में सूचीबद्ध किया गया था।

अंत में यह मुझ पर dawned: शायद मैं एक और सत्र के साथ लॉग इन कर रहा हूँ?

तो मैंने किया

# who

और यह मान्य है कि मेरे पास वास्तव में अन्य मशीनों से खुले सत्र हैं:

dom  pts/0        Nov 6 13:53 (10.1.6.121)
dom  pts/1        Nov 5 12:30 (10.1.6.165)
dom  pts/2        Nov 4 12:33 (10.1.6.197)

मैंने तब किया:

pkill -KILL -u dom

मैं तुरंत लॉग आउट हो गया और वापस लॉग इन करने के बाद: वोइला! खोल बदल दिया गया था

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