Mac OS X पर bash से zsh में लॉगिन शेल कैसे बदलें?


90

मैं से मैक ओएस एक्स के लॉग इन शैल बदलने के लिए कोशिश कर रहा हूँ bashकरने के लिए zsh। मुझे लगता है कि यह मैक ओएस एक्स तेंदुए में संभव है , लेकिन ओएस एक्स शेर के लिए मुझे कोई रास्ता नहीं मिल रहा है। मैं वास्तव में आशा करता हूं कि बैश से लॉग शेल को कुछ और में बदलना संभव है। मैं निश्चित रूप से निश्चित नहीं हूं कि मुझे कहां देखना है।


शेल को zsh में बदलने के बाद, मुझे अभी भी मैन्युअल रूप से zsh लॉन्च करना था। लॉग आउट करने से मदद नहीं मिली। मैंने तब zsh को सबसे बड़े लॉगिन शेल में बदल दिया। लॉग आउट किया और वहाँ था।

1
यदि और कुछ नहीं है, तो आप zsh को खोजने और निष्पादित करने के लिए .bashrc को हमेशा संशोधित कर सकते हैं। if [ -x /usr/local/bin/zsh ] ; then exec /usr/local/bin/zsh fi। संकेत, शेल स्टार्टअप स्क्रिप्ट को संशोधित करते समय, शेल को चालू रखना सुनिश्चित करें और किसी अन्य विंडो में एक नई शुरुआत करें - यदि आप इसे तोड़ते हैं तो आपके पास इसे ठीक करने के लिए एक आसान स्थान है।
दान प्रिट्स

जवाबों:


101

आप निम्न कमांड द्वारा उपयोगकर्ता शेल को बदल सकते हैं:

chsh -s /bin/zsh

नोट: इसे एक गैर-मानक शेल के लिए बदलने के लिए, सुनिश्चित करें कि इसका पथ /etc/shellsफ़ाइल में जोड़ा गया है।


4
मैंने होमब्रे के साथ zsh का एक नया संस्करण स्थापित किया, जिसने zsh को अंदर रखा /usr/local/bin/zsh। दुर्भाग्य से, chsh यह कहने की अनुमति नहीं देता है chsh: /usr/local/bin/zsh: non-standard shell। डैनियल बेक का जवाब इस मामले में एक उपयुक्त समाधान है।
adam_0

43
आप गैर मानक के गोले के साथ समस्याओं मिल रहे हैं, मुझे लगता है कि आप जोड़ने के लिए सक्षम होना चाहिए /usr/local/bin/zshकरने के लिए /etc/shellsहै और यह है कि समस्या का समाधान करना चाहिए।
माइक मेयर्स

13
Homebrew zsh स्थापित जानकारी वास्तव में आपको इसे / etc / गोले में जोड़ने की सलाह देती है: ==> Caveats To use this build of Zsh as your login shell, add it to /etc/shells.
जॉर्ज

कभी-कभी काम नहीं करता है। @ फ्रैंक का जवाब हालांकि यह सुनिश्चित करता है
ऑलिवरबारन्स

1
@Awesome_girl डिफ़ॉल्ट रूप से, /etc/shellsस्वामित्व में है, और केवल मूल ( सुपरसुअर) द्वारा लिखने योग्य है। उदाहरण के लिए, आप संपादक को संपादित करने के sudo vi /etc/shellsलिए उपयोग sudo( s uper u ser do ) का उपयोग कर सकते हैं । मैंने सिर्फ अपने सिस्टम पर परीक्षण किया और पुष्टि की कि यह सिस्टम इंटीग्रिटी प्रोटेक्शन द्वारा संरक्षित नहीं है, इसलिए आपको एसआईपी को निष्क्रिय करने के लिए हुप्स के माध्यम से कूदने के बिना इसे रूट के रूप में संपादित करने में सक्षम होना चाहिए। vi/etc/shells
स्पाइफ

54

मजेदार रूप से पर्याप्त है, वही विधि जिसे आप अपने प्रश्न में लिंक करते हैं वह अभी भी सिएरा (10.12) के माध्यम से ओएस एक्स लायन में काम करती है। एकमात्र अंतर: प्राथमिकता फलक को खातों के बजाय उपयोगकर्ता और समूह का नाम दिया गया है ।

  1. "सिस्टम प्राथमिकताएं" → "उपयोगकर्ता और समूह" खोलें।
  2. जब तक लॉक आइकन पहले से अनलॉक नहीं हो जाता, लॉक आइकन पर क्लिक करें और खुद को प्रमाणित करें।
  3. उपयोगकर्ता नामों की सूची में एक उपयोगकर्ता पर संदर्भ-क्लिक करें ( Controlक्लिक करते समय कुंजी दबाए रखें , या दाएं हाथ के दो बटन माउस पर राइट-क्लिक करें)।
  4. संदर्भ मेनू में, "उन्नत विकल्प ..." चुनें।
  5. दिखाई देने वाली शीट में "लॉगिन शेल" चुनें।

"उन्नत विकल्प" स्क्रीन के शीर्ष पर स्थित नोट यह दावा करता है कि परिवर्तन को प्रभावी करने के लिए आपको पुनः आरंभ करना होगा, लेकिन आपको वास्तव में बस फिर से लॉग आउट करना होगा।

यहाँ छवि विवरण दर्ज करें


1
पुष्टि की कि यह माउंटेन लायन में काम करता है, साथ ही साथ "गैर-मानक गोले" के साथ काम करता है जिसे आप स्वयं स्थापित कर सकते हैं (या होमब्रे स्थापित करें)।
adam_0

2
अभी भी 10.10 योसेमाइट में काम करने की पुष्टि की गई है।
इक्‍नेप्‍सनै

4
"उन्नत विकल्प" वाले मेनू को लाने के लिए उपयोगकर्ता नाम पर राइट क्लिक करें। मुझे खोजने में कुछ मिनट लगे।
pdwalker

1
किसी को उत्तर देने से पहले सभी जानकारी एकत्र करने के लिए ऑफसाइट जाने के लिए क्यों मजबूर करें? इसलिए मामले में टिप्पणी किसी और की धारणा है कि जवाब यहाँ और यहाँ के बजाय यहाँ है बनाता है।
pdwalker

1
@jvriesem वास्तव में, यह करता है। मेरा अनुमान है कि आप चरण 2 छोड़ दिया गया है
डैनियल बेक

11

या:

sudo dscl . change /users/$USER UserShell /bin/bash $(which zsh)

3
क्या आप बता सकते हैं कि यह सवाल का जवाब क्यों देता है?
क्रिस 55

इसके बाद इसे चलाना सुनिश्चित करें brew install zsh
mmell

3
इसके अलावा, सावधान रहें कि होमब्रे के माध्यम से स्थापित zsh का मार्ग अलग है। मैं इसे इस प्रकार करता हूं:sudo dscl . change /users/$USER UserShell /bin/bash $(which zsh)
मेटाक्रिट

1
चेतावनी: यदि आप पहले zsh के रास्ते की जाँच किए बिना इसे कॉपी / पेस्ट करते हैं तो यह आपके खोल को तोड़ देगा। इसके बजाय मेटकार्मिट ने क्या कहा।
मूलांक 13

1

अगर किसी को भी ऐसी ही समस्या है, तो मैक्रोज़ सिएरा पर समस्या होती है और निम्नलिखित आदेश ने मुझे समस्याओं के बिना शेल बदलने की अनुमति दी है:

chpass -s /usr/local/bin/zsh

1
यह एक और उत्तर को दोहराता है और कोई नई सामग्री नहीं जोड़ता है। कृपया जवाब न दें जब तक कि आपके पास योगदान देने के लिए वास्तव में कुछ नया न हो। "chfn और chsh, chpass के पर्यायवाची हैं।"
DavidPostill
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.