मैक ओएस एक्स (iTerm में) पर लॉग शेल के रूप में zsh रन कैसे बनाएं?


149

जब zsh को Mac OS X पर एक लॉगिन शेल के रूप में सेट किया जाता है, जब इसे iTerm द्वारा शुरू किया जाता है, तो zsh यह नहीं मानता है कि इसे लॉगिन शेल के रूप में चलाया जा रहा है, हालांकि इसे '-zsh' ('-' के रूप में शुरू किया गया है) arg का पहला वर्ण [को ०]) जिसका अर्थ यह माना जाता है कि यह एक लॉगिन शेल के रूप में शुरू होना चाहिए।

इसलिए, जब मैं लॉगिन शेल को bash में सेट करता हूं, तो bash इस पहले '-' को $ 0 में पहचानता है और लॉगिन शेल के रूप में चलता है, लेकिन zsh नहीं करता है, हालांकि ऐसा लगता है कि यह होना चाहिए।

वहाँ एक तरीका है या तो zsh को '-' को arg [0] में पहचानना है, या iTerm को शेल कमांड लाइन तर्क से खोलना है?


2
मुझे पता है कि यह पूछे जाने के बाद से कुछ समय हो गया है, लेकिन कृपया @ हेरोल्ड पुटमैन के जवाब को स्वीकार करने पर विचार करें। यह केवल वह है जिस पर पूछे गए प्रश्न को संबोधित करता है।
क्रेग एस। कोटिंघम

जवाबों:


106

ITerm में -> वरीयताएँ -> प्रोफाइल टैब -> सामान्य अनुभाग में कमांड सेट करें: / bin / zsh --login

/ बिन / zsh --login


1
iterm2 को यह विकल्प सामान्य टैब में नहीं लगता है। किसी भी विचार कैसे लॉगिन खोल को बदलने के बिना iterm2 में प्राप्त करने के लिए?
लॉयड डेवुल्फ़

6
यह प्रोफाइल टैब पर सामान्य टैब है।
हेरोल्ड पुटमैन

अहा! यह भ्रामक है कि एक सामान्य टैब और एक प्रोफ़ाइल> जनरल दोनों है।
लॉयड डेवॉल्फ

2
या मेरे मामले में/usr/local/bin/zsh --login
यार

मैं / etc / गोले संपादित करने के बजाय अपने शेल को बदलने के लिए इसका उपयोग कर रहा हूं क्योंकि यह एक अद्यतन के बाद मेरे शेल के अनुपयोगी होने से एक समस्या को रोकना चाहिए।
साल

220
chsh -s $(which zsh)

आपको अपने पासवर्ड के लिए प्रेरित किया जाएगा, लेकिन एक बार जब आप अपनी सेटिंग्स को अपडेट करते हैं तो उस मशीन पर शुरू होने वाले किसी भी नए iTerm / Terminal सत्र zsh के लिए डिफ़ॉल्ट हो जाएंगे।


2
कृपया, पहले प्रश्न पढ़ें। समस्या डिफ़ॉल्ट शेल को सेट करने में नहीं है, समस्या यह है कि zsh यह पता नहीं लगा रहा है कि इसे लॉगिन शेल के रूप में शुरू किया गया है।
इवान तरासोव

1
आह, मेरी क्षमायाचना। क्या आपने इंटरैक्टिव मोड में शुरू करने के लिए zsh को बाध्य करने के लिए -i ध्वज का उपयोग करने की कोशिश की है?
डेमियन विल्सन

11
उसका जवाब यह करता है कि ज़र्म रन मैक ओएस एक्स पर iTerm में एक लॉगिन शेल के रूप में चलता है। यह सिर्फ उस तरह से करने के बारे में नहीं है जिस तरह से आप प्रयास करने का वर्णन करते हैं। लेकिन यह उस समस्या को हल करता है जिसे आप सवाल करते हैं (शीर्षक में, बजाय शरीर में) प्रस्तुत करता है। शरीर में आपके द्वारा समाप्त किया गया प्रश्न पूरी तरह से एक अलग प्रश्न है। यदि यह आपका वास्तविक प्रश्न है (लॉगइन शेल के रूप में zsh रन बनाने के बजाय) तो शायद आपको शीर्षक में प्रश्न को फिर से लिखना चाहिए।
iconoclast

45
यदि chshआपको "नॉनस्टैंडर्ड शेल" जैसी कोई चीज़ बताती है, तो इसका मतलब है कि आपको नए शेल का रास्ता जोड़ना होगा /etc/shells। यह तब हो सकता है यदि आप बदल रहे हैं, उदाहरण के लिए, होमब्रे द्वारा स्थापित zsh के एक संस्करण के लिए, जो इसे डालता है /usr/local/bin/zsh
shovavnik

1
chsh -s $(which zsh)सही रास्ता सुनिश्चित करने के लिए इस्तेमाल किया जा सकता है।
डेनियल डोज़ेमा

56

सिस्टम प्राथमिकताएँ के उपयोगकर्ता और समूह फलक पर जाएँ -> उपयोगकर्ता का चयन करें -> परिवर्तन करने के लिए लॉक पर क्लिक करें (नीचे बाएं कोने में) -> राइट क्लिक करें वर्तमान उपयोगकर्ता उन्नत विकल्पों का चयन करें ... -> लॉगिन शैल चुनें : / बिन / zsh और ठीक है


3
इससे मेरा दिन बच गया। मैं osx mavericks पर हूं।
क्लेड

यह डिफ़ॉल्ट zsh के लिए काम करता है जो कि काढ़ा द्वारा स्थापित नहीं है।
इमाम बक्स

19

स्टार्टअप पर शेल को बदलने की कमान है chsh -s <path_to_shell>। मैक ओएस एक्स में डिफ़ॉल्ट गोले binनिर्देशिका के अंदर स्थापित किए जाते हैं इसलिए यदि आप डिफ़ॉल्ट को बदलना चाहते हैं zshतो आप निम्नलिखित का उपयोग करेंगे

chsh -s /bin/zsh

यदि आप अलग-अलग संस्करण का उपयोग कर रहे हैं, zshतो आपको /etc/shellsगैर-मानक शेल संदेश से बचने के लिए उस संस्करण को जोड़ना पड़ सकता है । उदाहरण के लिए यदि आप होम-ब्रुअ के संस्करण चाहते हैं zshतो आपको /usr/local/bin/zshपूर्वोक्त फ़ाइल में जोड़ना होगा जिसे आप एक कमांड में कर सकते हैं sudo sh -c "echo '/usr/local/bin/zsh' >> /etc/shells"और फिर चला सकते हैं

chsh -s /usr/local/bin/zsh

या यदि आप पूरी बात एक कमांड में करना चाहते हैं तो इसे कॉपी और पेस्ट करें यदि आपके पास पहले से ही zsh स्थापित है

sudo sh -c "echo '/usr/local/bin/zsh' >> /etc/shells" && chsh -s /usr/local/bin/zsh

2
मुझे नहीं लगता कि इस जवाब को खारिज करना उचित था। प्रॉप्स के रूप में यह केवल एक /etc/shellsही है जो उत्तर के शरीर में उल्लेख करता है।
हेमटथ्यू

1
@heymatthew इसका कारण यह बताया जा रहा है क्योंकि इसमें पूछे गए सवाल का जवाब नहीं था। इसने एक पूरी तरह से अलग असंबंधित प्रश्न का उत्तर दिया।
तबिता

17

क्या आपने खाता सेटिंग में शेल प्रविष्टि को संपादित करने की कोशिश की है ।

उन्नत सेटिंग संवाद के लिए अपने उपयोगकर्ता खाते पर खाता वरीयताएँ पर जाएँ, अनलॉक करें और राइट-क्लिक करें । आपका शेल / बिन / zsh होना चाहिए, और आप उस मंगलाचरण को उचित रूप से संपादित कर सकते हैं (यानी - the- एल्गिन तर्क जोड़ें)।


दुर्भाग्य से, यह काम नहीं करता है: मैं जो भी chsh (जब तक मैं इस शेल को / etc / गोले में सूचीबद्ध है) का उपयोग करके खोलना पसंद कर सकता हूं, हालांकि उन्नत कमांड संवाद शेल में कमांड लाइन तर्क नहीं जोड़ सकता है (iTerm विफल) खोलना शुरू करने के लिए)।
इवान टारासोव

सिंटैक्स के कुछ ओएस एक्स में बदल गए हैं, लेकिन जिस्ट आपके डिफ़ॉल्ट शेल को सेट करने के लिए है / बिन / zsh के रूप में ब्रायन ऊपर इंगित करता है
इंजीनियरडाउन

7
मैं बहुत प्रेम करता हूँ। मैंने अभी इस उत्तर का उपयोग किया है, और केवल तब मुझे एहसास हुआ कि मैंने इसे लगभग 4 साल पहले लिखा था!
ब्रायन एग्न्यू

-2

loginलॉगिन शेल बनाने के लिए उपयोगिता का उपयोग करें । मान लें कि जिस उपयोगकर्ता को आप लॉग इन करना चाहते हैं, उसका उपयोगकर्ता नाम ऐलिस है और यह zsh में स्थापित है /opt/local/bin/zsh(उदाहरण के लिए, MacPorts के माध्यम से इंस्टॉल किया गया अधिक संस्करण)। ITerm 2 में, प्राथमिकताएं, प्रोफ़ाइल पर जाएं, उस प्रोफ़ाइल का चयन करें जिसे आप सेट करना चाहते हैं, और कमांड में दर्ज करें :

login -pfq Alice /opt/local/bin/zsh

man loginविकल्पों पर अधिक जानकारी के लिए देखें ।


यह 100% उत्तर नहीं है। हां, डिफ़ॉल्ट रूप से आप कौन से शेल को बदलेंगे, लेकिन यह इस बात का जवाब नहीं है कि किसी शेल के "लॉगिन" उदाहरण को कैसे बनाया जाए, यानी स्क्रैच से सभी चर।
तबित्था
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.