Cygwin के साथ zsh


35

मैं साइगविन के तहत डिफ़ॉल्ट शेल होने के लिए zsh को कैसे कॉन्फ़िगर कर सकता हूं?

जवाबों:


45

जब तक आप एक बहु- chshस्तरीय वातावरण के रूप में साइबरविन का उपयोग कर रहे हैं (जिस स्थिति में आप मानक पर्यावरण के तहत उपयोग करेंगे)।

अन्यथा, आप zsh -l -iइसके बजाय चलाने के लिए cygwin.bat को बदलते हैं bash --login -iऔर यह लॉगिन शेल के रूप में चलेगा।  

बेशक, यदि आप स्टार्टअप से कई गोले चलाना चाहते हैं, तो बस .batअलग-अलग गोले लोड करने के लिए फ़ाइलों का एक सेट बनाएं । ( sh, ksh, csh, fishआदि)

अद्यतन करें...

मैंने महसूस किया कि मुझे इसे अपडेट करने के लिए इसे बिना किसी जानकारी के प्रदान करना चाहिए chshलेकिन फिर भी इसे यूनिक्स के अंत में करना चाहिए। /etc/passwdफ़ाइल संपादित करें और के /bin/bashसाथ होने वाली घटनाओं को बदलें /bin/zsh। (यह प्रभावी रूप से क्या chshकरेगा, लेकिन इस तरह से आप इसे एक ही बार में सभी उपयोगकर्ताओं के लिए करेंगे ।)


15
डिफ़ॉल्ट रूप से cygwin में अब एक / etc / passwd नहीं है, और chsh अब समर्थित नहीं है। यह उत्तर मदद नहीं करता है (10 अप्रैल, 2014)।
जेफ स्नाइडर

घर जाओ @THESorcerer तुम नशे में हो
ocodo

2
@JeffSnider mkpasswd -l -p "$(cygpath -H)" > /etc/passwd/etc/passwd
ब्रूनो एलएम

17

यदि मैं आपका प्रश्न सही पढ़ता हूं, तो आप कुछ और खोज रहे हैं जो चेरे की आपूर्ति (जो प्रदान की गई है, अपने आप में बहुत अच्छा है)।

Cygwin के वर्तमान संस्करण में / etc / passwd फ़ाइल नहीं है, और मैं जिस सिस्टम पर काम कर रहा हूं, मेरे नियंत्रण से बाहर एक डोमेन डेटाबेस में Windows खाता जानकारी है। नतीजतन, chsh अब समर्थित नहीं है।

मैंने यह भी पाया कि बैश, स्टार्टक्सविन स्क्रिप्ट में हार्ड-कोडेड नहीं है , न ही यह किसी भी .bat फ़ाइल में हार्ड-कोडेड है। पता चला है कि आप .bat फ़ाइलों के साथ बेला करने की आवश्यकता नहीं है।

अपने शेल को कैसे बदलना है, इसकी खोज करते हुए, मुझे mkpasswd के बारे में कुछ सलाह मिली

मैंने इसे मिश्रण में जोड़ा।

मानव-पृष्ठ ने कहा:

SYNOPSIS
   mkpasswd [OPTIONS]...

OPTIONS
   Don't use this command to generate a local /etc/passwd file, unless you
   really need one.  See the Cygwin User's Guide for more information.

   -c,--current
          Print current user.

  DESCRIPTION
        The   mkpasswd  program can be used to create a        /etc/passwd
   file.  Cygwin doesn't need  this  file,        because  it  reads  user
   information  from  the Windows account databases,       but you can add
   an  /etc/passwd file, for instance       if your machine is often  dis‐
   connected from its domain controller.

        Note  that this information is static, in contrast to the informa‐
   tion       automatically gathered by Cygwin from  the  Windows  account
   databases.  If        you  change  the user information on your system,
   you'll need to regenerate       the passwd file for it to have the  new
   information.


        For  very  simple needs, an entry for the current user can be cre
   ated       by using the option  -c.

(मुझे नहीं पता कि रिक्ति इतनी "बंद" क्यों है ...)

मैंने तब निम्न कमांड का उपयोग किया:

mkpasswd -c | sed -e 'sX / bashX / zshX' | टी-ए / आदि / पासवार्ड

अगली बार जब आप साइगविन टर्मिनल खोलेंगे, तो यह सीधे zsh पर जाएगा

और मुझे लगता है कि, आपने जो माँगा है।


17

मैं सिर्फ binअपने विंडोज पथ पर्यावरण चर के लिए cygwin निर्देशिका में निर्देशिका जोड़ने और फिर एक शॉर्टकट बनाने के लिए:

mintty.exe -i /Cygwin-Terminal.ico /bin/zsh --login

या बस डिफ़ॉल्ट cygwin प्रारंभ मेनू शॉर्टकट को उसी में बदलें।


2
मुझे /bin/zshइसके बजाय उपयोग करना था zsh
kraiz

1
the bin directory in the cygwin directory to my Windows Path Environment Variableमेरे लिए इस बदलाव के बिना काम करता है
ruslo

इसकी iआवश्यकता नहीं है क्योंकि यह एक लॉगिन शेल होगा और नहीं interactive
टिमो

7

ढेर अतिप्रवाह पर मेरे जवाब से नकल :


एक पासवार्ड फ़ाइल बनाने के बजाय, जिसे साइगविन 1 के खिलाफ सुझाता है , आप /etc/nsswitch.conf को संपादित कर सकते हैं । निम्न पंक्ति जोड़ें या संपादित करें:

db_shell: / usr / bin / zsh

इस पद्धति का डाउन / अप पक्ष यह है कि, यदि आपके पास कई उपयोगकर्ता हैं, तो यह परिवर्तन उन सभी को प्रभावित करता है। ऊपर / ऊपर की तरफ है कि यह मृत सरल है। एकमात्र पकड़ यह है कि आपको Cygwin को पुनरारंभ करना होगा।

यदि आप इस परिवर्तन के बाद mkpasswd का उपयोग करते हैं, तो यह उन सभी उपयोगकर्ताओं के लिए आपके नए डिफ़ॉल्ट शेल का उपयोग करेगा जिन्हें लॉग ऑन करने की अनुमति है।


1 mkpasswd प्रलेखन यह कहता है:

जब तक आपको वास्तव में एक की आवश्यकता न हो, स्थानीय / etc / passwd फ़ाइल बनाने के लिए इस कमांड का उपयोग न करें। अधिक जानकारी के लिए सिगविन उपयोगकर्ता गाइड देखें।

मैं वास्तव में उपयोगकर्ता के गाइड में कोई ठोस तर्क नहीं पा सकता , एक उल्लेख के अलावा जो आपको / etc / passwd और / etc / group फ़ाइलों को फिर से प्राप्त करना होगा यदि आपके उपयोगकर्ता और समूह बदलते हैं, जो मुझे लगता है कि एक सभ्य पर्याप्त है कारण। मैं कह सकता हूं कि यह प्रक्रिया कुछ हद तक त्रुटि के लिए है।


इसे स्वीकार किया जाना चाहिए।
आर्द्रा

4

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

मैं शेल वातावरण चर सेट करने में सक्षम था Windows में करने के लिए /usr/bin/zshऔर यह किसी भी अन्य बदलाव के बिना काम किया। मैंने इसे अपने विंडोज उपयोगकर्ता के लिए बदल दिया है, न कि विश्व स्तर पर।

परिवेश चर सेट करना संभवतः विंडोज के विभिन्न संस्करणों के लिए भिन्न होता है। अपने विंडोज कंट्रोल पैनल में "पर्यावरण" खोजने की कोशिश करें। मेरे लिए, विंडोज 7 के तहत, यह कंट्रोल पैनल → सिस्टम → एडवांस्ड सिस्टम सेटिंग्स था, जो सिस्टम प्रॉपर्टीज कंट्रोल पैनल / डायलॉग लाता है, फिर एडवांस्ड टैब, फिर एनवायरमेंट वेरिएबल्स बटन, जो एनवायरमेंट वेरिएबल्स डायलॉग लाता है, फिर क्रिएट करता है। SHELLमूल्य के साथ नामित एक नया उपयोगकर्ता चर /usr/bin/zsh। फिर उस सब से बाहर वापस आ जाओ और एक नई मिनिट शुरू करो।


अब इसे और मज़बूती से बढ़ाना चाहिए! सबसे सरल तरीका है जो सिग्विन के आंतरिक तंत्र के साथ गड़बड़ नहीं करता है, और आसानी से प्रतिवर्ती है!
पेपोलुआन

1

बस मैंने सोचा कि मैं इस उत्तर को उस मामले में जोड़ दूंगा जो किसी को भी इसकी तलाश में मदद करता है। यदि आप चेरे का उपयोग करते हैं (जो किसी भी फ़ोल्डर के राइट-क्लिक संदर्भ मेनू में "बैश प्रॉम्प्ट" विकल्प जोड़ता है), तो आप इसे zsh ("Zsh Prompt Here") के साथ सेट कर सकते हैं:

chere -i -t mintty -s zsh

0

यदि आप IDE Intellij के अंदर Cygwin खोल का उपयोग करना चाहते हैं, तो सेटिंग्स / टूल / टर्मिनल के अंदर निम्नलिखित सेटअप का उपयोग करें

c:\cygwin\bin\zsh.exe -l -i

यह एक नई विंडो को खोलने के बजाय intellij के अंदर cygwin शेल को एम्बेड करेगा

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