सवाल मैक ओएस एक्स पर लॉगिन शेल को बैश से zsh में कैसे बदलें?


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


82
2017-11-28 21:34


मूल


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


जवाब:


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

chsh -s /bin/zsh

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


90
2017-11-28 21:38



मैंने होमब्रू के साथ zsh का एक नया संस्करण स्थापित किया, जिसमें zsh डाल दिया गया /usr/local/bin/zsh। दुर्भाग्य से, chsh यह कहने की अनुमति नहीं देता है chsh: /usr/local/bin/zsh: non-standard shell। डैनियल बेक का जवाब इस मामले में एक उपयुक्त समाधान है। - adam_0
यदि आपको गैर मानक शैल के साथ समस्याएं आ रही हैं, तो मुझे लगता है कि आपको जोड़ने में सक्षम होना चाहिए /usr/local/bin/zsh सेवा मेरे /etc/shells और यह उस समस्या को हल करना चाहिए। - Mike Meyers
होमब्री zsh इंस्टॉल जानकारी वास्तव में आपको इसे / etc / shells में जोड़ने की सलाह देती है: ==> Caveats To use this build of Zsh as your login shell, add it to /etc/shells. - George
कभी-कभी काम नहीं करता है। @ फ्रैंक का जवाब हालांकि यह सुनिश्चित करता है - oliverbarnes
@Awesome_girl डिफ़ॉल्ट रूप से, /etc/shells स्वामित्व में है, और केवल रूट, सुपरसियर द्वारा लिखने योग्य है। उदाहरण के लिए, आप इसका उपयोग कर सकते हैं sudo vi /etc/shells उपयोग करने के लिए sudo (रोंuper यूसेवा करना) चलाने के लिए vi संपादित करने के लिए संपादक /etc/shells। मैंने अभी अपने सिस्टम पर परीक्षण किया है और पुष्टि की है कि यह सिस्टम इंटीग्रटी प्रोटेक्शन द्वारा संरक्षित नहीं है, इसलिए आपको एसआईपी को अक्षम करने के लिए हुप्स के माध्यम से कूदने के बिना इसे रूट के रूप में संपादित करने में सक्षम होना चाहिए। - Spiff


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

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

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

enter image description here


48
2017-12-01 17:21



पुष्टि की है कि यह माउंटेन शेर में काम करता है, साथ ही साथ "गैर मानक शैल" के साथ काम करता है जिसे आप स्वयं स्थापित कर सकते हैं (या होमब्रू इंस्टॉल करें)। - adam_0
अभी भी 10.10 योसाइट में काम कर रहे हैं। - ecnepsnai
"उन्नत विकल्प" युक्त मेनू लाने के लिए उपयोगकर्ता नाम पर राइट क्लिक करें। मुझे खोजने के लिए मुझे कुछ मिनट लगे। - pdwalker
जवाब देने में सक्षम होने से पहले सभी जानकारी इकट्ठा करने के लिए किसी को ऑफसाइट जाने के लिए बाध्य क्यों करें? इसलिए किसी और के मामले में टिप्पणी एक ही धारणा बनाती है कि उत्तर यहां और वहां के बजाय यहां है। - pdwalker
@jvriesem वास्तव में, यह करता है। मेरा अनुमान है कि आप चरण 2 छोड़ दिया है। - Daniel Beck♦


या:

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

10
2017-11-25 09:52



क्या आप समझा सकते हैं कि यह सवाल क्यों जवाब देता है? - ChrisF
इसे चलाने के लिए सुनिश्चित हो बाद  brew install zsh। - mmell
साथ ही, सावधान रहें कि होमब्रू के माध्यम से स्थापित zsh का पथ अलग है। मैं इसे इस प्रकार करता हूं: sudo dscl . change /users/$USER UserShell /bin/bash $(which zsh) - metakermit
चेतावनी: यदि आप पहले zsh के पथ की जांच किए बिना इसे कॉपी / पेस्ट करते हैं तो यह आपके खोल को तोड़ देगा। इसके बजाय मेटाकर्मिट ने क्या कहा। - radixhound


यदि कोई भी एक ही समस्या सोच रहा है तो मैकोज सिएरा पर होता है और निम्नलिखित कमांड ने मुझे समस्याओं के बिना खोल बदलने की अनुमति दी:

chpass -s /usr/local/bin/zsh

1
2017-11-25 07:02



यह एक और जवाब डुप्लिकेट करता है और कोई नई सामग्री नहीं जोड़ता है। कृपया उत्तर पोस्ट न करें जबतक कि वास्तव में योगदान करने के लिए आपके पास कुछ नया न हो। "chfn और chsh chpass के लिए समानार्थी हैं।" - DavidPostill♦