मैक पर मेरा डिफ़ॉल्ट शेल कैसे सेट करें?


190

हर बार जब मैं टर्मिनल शुरू करता हूं तो मुझे मछली को दोबारा बनाना पसंद नहीं है। मैं fishडिफ़ॉल्ट रूप से चाहता हूं । मैं मैक पर अपने डिफ़ॉल्ट शेल के रूप में फिश शेल कैसे सेट कर सकता हूं?

जवाबों:


31

ये MacOS Sierra 10.12.5 (16F73) और शायद MacOS के कुछ अन्य हालिया और आगामी संस्करणों पर लागू होते हैं।

  1. chshडिफ़ॉल्ट शेल को बदलने के लिए पर्याप्त नहीं है। सुनिश्चित करें कि आप अपने टर्मिनल को खोलते समय Command+ दबाते ,हैं और 'गोले खुले' विकल्प को 'डिफ़ॉल्ट लॉगिन शेल' में बदलें।

  2. बैश के मामले में, सुनिश्चित करें कि आप echo $BASH_VERSIONपुष्टि करने के लिए निष्पादित करते हैं कि आप बैश के इच्छित संस्करण को चला रहे हैं। bash --versionआपको सही जानकारी नहीं देता है।


3
जैसा कि इस उत्तर को स्वीकार किया जाता है, शायद इसके बजाय यह एक अन्य उत्तर के लिए परिशिष्ट है , आप इसे परिशिष्ट में शामिल करने के लिए पूर्ण उत्तर दे सकते हैं।
जेसन आर। कोम्स

अब डॉक्स में इसका जवाब दिया गया है
reergymerej

@ जेसनआर.चब्स ने किया।
तुषार वज़ीरानी

1
अपडेट: अब हम में डिफ़ॉल्ट खोल सेट कर सकते हैं Preferencesकी Terminal.app । पंकज का यह जवाब देखिए ।
बेसिल बोर्के

मैंने प्राथमिकताओं के लिए कीबोर्ड शॉर्टकट का उल्लेख किया है।
तुषार वाजिरानी 21

242

1. सुडो नैनो / आदि / गोले यहां छवि विवरण दर्ज करें

2. गोले की सूची में usr / usr / स्थानीय / बिन / मछली जोड़ें यहां छवि विवरण दर्ज करें

3. chsh -s / usr / स्थानीय / बिन / मछली


2
और आपको Shell open with: Default login shell
Tikhonov Alexander

77

आप उपयोगकर्ता के शेल को बदलने के लिए chsh का उपयोग कर सकते हैं ।

उदाहरण के लिए, Zsh में अपने शेल को बदलने के लिए, निम्न कोड चलाएँ

chsh -s /bin/zsh

मैनपेज में वर्णित है, और Lorin द्वारा, अगर खोल ओएस द्वारा ज्ञात नहीं है, तो आप अपने ज्ञात सूची में जोड़ने के लिए है: /etc/shells


13
कोशिश की गई और chsh: /usr/local/bin/fish: non-standard shell समाधान मिला कि इसे / etc / गोले में जोड़ने के लिए नीचे दिए गए @ lorin-hochstein उत्तर द्वारा वर्णित किया गया था
lmsurprenant

dbright @ PowerMac: ~ $ chsh -s / Users / dbright / sys / bin / bash डबिंग के लिए शेल बदलना। Dbright का पासवर्ड: chsh: / उपयोगकर्ता / dbright / sys / bin / bash: गैर-मानक शेल dbright @ PowerMac: ~ $ ls -l / etc / shells -rw-r - r-- 1 पहिया पहिया 179 Sep 23 2007 / etc / गोले
उज्ज्वल

हम, मैंने हाल ही में chsh की कोशिश की है जो एक साधारण उपयोगकर्ता ( -sहालांकि बिना ) के रूप में काम करता है । मैं जल्द ही फिर से कोशिश करूँगा।
एआईएफ

73

टर्मिनल से:

  1. मछली जोड़ें /etc/shells, जिसमें एक प्रशासनिक पासवर्ड की आवश्यकता होगी:

    sudo echo /usr/local/bin/fish >> /etc/shells
    
  2. मछली को अपना डिफ़ॉल्ट शेल बनाएं chsh:

    chsh -s /usr/local/bin/fish
    

सिस्टम प्राथमिकता से:

  1. उपयोगकर्ता और समूह → ctrl - वर्तमान उपयोगकर्ता → उन्नत विकल्प पर क्लिक करें ...

  2. लॉगिन शेल को बदलें /usr/local/bin/fish

    लॉगिन शेल

  3. ओके दबाएं, लॉग आउट करें और फिर से


8
चरण 1 के लिए एक छोटा सा sudo sh -c 'echo /usr/local/bin/fish >> /etc/shells'
मोड़ करना था

इसी तरह की बात करने का एक और तरीका @purpletonic ने उल्लेख किया हैecho /usr/local/bin/fish | sudo tee -a /etc/shells
mroach

20

यहाँ यह करने का एक और तरीका है:

यह मानते हुए कि आपने इसे MacPorts के साथ संस्थापित किया है, जिसे करके किया जा सकता है:

sudo port install fish

आपके खोल में स्थित होगा /opt/local/bin/fish

आपको OSX को यह बताने की आवश्यकता है कि यह एक वैध शेल है। ऐसा करने के लिए, /etc/shellsफ़ाइल के अंत में यह पथ जोड़ें ।

एक बार जब आप ऐसा कर लेते हैं, तो आप सिस्टम प्राथमिकता -> खातों में जाकर शेल को बदल सकते हैं। परिवर्तनों को अनुमति देने के लिए लॉक पर क्लिक करें। खाते पर राइट-क्लिक करें, और "उन्नत विकल्प ..." चुनें। "लॉगिन शेल" फ़ील्ड में, मछली का मार्ग जोड़ें।


धन्यवाद! इसने बहुत अच्छा काम किया और मछली को हर जगह मेरा डिफ़ॉल्ट टर्मिनल बना दिया। बस इसे टर्मिनल में बदल रहा हूं जैसे कि अन्य उत्तरों में से एक ने टर्मिनल प्रॉम्प्ट किया मुझे हर बार जब मैंने एक खिड़की बंद की और चश मेरे लिए काम नहीं किया।
१६:०६ पर jasongregori

12

केवल एक चीज जो मेरे लिए काम करती थी वह इन सभी तरीकों का एक संयोजन थी।

  1. पहले मुझे /etc/shellsफ़ाइल में मछली जोड़ना पड़ा

  2. फिर मैं भागा chsh -s /usr/local/bin/fish

  3. अंत में, मैंने टाइप किया Command+ ,और /usr/local/bin/fishवहां डिफ़ॉल्ट पथ में जोड़ा गया

जब मैंने तीनों चीजें की थीं, तब ही मछली नई टर्मिनल खिड़कियों के लिए डिफ़ॉल्ट रूप में पॉपिंग शुरू कर दी थी।


9

2
मैं इस दृष्टिकोण को पसंद करने और अपने डिफ़ॉल्ट OSX शेल को नहीं बदलने की सलाह दूंगा। मैंने iWorks पर "अनंत इंस्टॉल" किया है - उदाहरण के लिए - इंस्टॉल स्क्रिप्ट के कारण जो आपको लगता है कि आपके पास SH- संगत शेल है (मेरे मामले में ZSH के लिए मामला नहीं है)।
साइबर ओलिवेरा

8

Terminal.app > Preferences> General> Shells open with:>/bin/fish

  1. अपना टर्मिनल खोलें और command+ ,(अल्पविराम) दबाएँ । यह एक प्राथमिकता विंडो खोलेगा।
  2. पहला टैब 'सामान्य' है।
  3. 'गोले खोलें' सेटिंग के साथ खोजें और दूसरा विकल्प चुनें जो शेल के लिए पूर्ण पथ की आवश्यकता हो।
  4. अपने फिश कमांड का लिंक पेस्ट करें, जो आम तौर पर होता है /usr/local/bin/fish

यह स्क्रीनशॉट देखें जहां zshडिफ़ॉल्ट के रूप में सेट किया जा रहा है।

Terminal.app प्राथमिकताओं में <code> / bin / zsh </ code> दर्ज करने का स्क्रीनशॉट

मैं macOS सिएरा का उपयोग कर रहा हूं । MacOS Mojave में भी काम करता है ।


2
अंत में! एक समाधान जो एक गैर-सुडो उपयोगकर्ता के लिए काम करता है!
51बे इसाक

7

MacOS Mojave पर मुझे निम्नलिखित कार्य करने थे (उदाहरण के लिए zsh का उपयोग करते हुए):

brew install zsh
sudo sh -c "echo $(which zsh) >> /etc/shells"
chsh -s $(which zsh)

नोट: आप इस सटीक विधि का उपयोग करके bash का नवीनतम संस्करण भी प्राप्त कर सकते हैं। stackoverflow.com/a/55011144/117471 मैं अपने दम पर लगभग एक ही कोड के साथ आया था।
ब्रूनो ब्रोंस्की

1
स्थापित करने की आवश्यकता नहीं है zsh। पहले से ही MacOS Mojave पर मौजूद है। Mojave पर बंडल, और कैटालिना में डिफ़ॉल्ट।
बेसिल बोर्क

5

आधुनिक मैकओएस (मोजावे पर परीक्षण) पर बैश का नवीनतम संस्करण कैसे प्राप्त करें।

brew install bash
which bash | sudo tee -a /etc/shells
chsh -s $(which bash)

फिर आप विम स्टाइल टैब पूरा करने के लिए तैयार हैं जो केवल bash> = 4 पर उपलब्ध है (वर्तमान संस्करण brew5.0.2 में है

# If there are multiple matches for completion, Tab should cycle through them
bind 'TAB':menu-complete

# Display a list of the matching files
bind "set show-all-if-ambiguous on"

# Perform partial completion on the first Tab press,
# only start cycling full results on the second Tab press
bind "set menu-complete-display-prefix on"

4

chshकार्यक्रम आप अपने डिफ़ॉल्ट खोल बदल देंगे। यह निष्पादन योग्य के लिए पूर्ण पथ चाहेगा, इसलिए यदि आपका शेल है, fishतो यह चाहेगा कि आप टाइप करने पर दिए गए आउटपुट प्रदान कर सकें which fish

आपको " Shell:" से शुरू होने वाली रेखा दिखाई देगी । यदि आपने इसे कभी संपादित नहीं किया है, तो यह सबसे अधिक संभावना है " Shell: /bin/bash"। उस /bin/bashपथ को अपने इच्छित शेल से बदलें ।


4

टर्मिनल में, Command+ का उपयोग करके टर्मिनल प्राथमिकताएं खोलें ,

सेटिंग टैब पर, थीम में से एक का चयन करें, और दाईं ओर शेल टैब चुनें।

आप ऑटोस्टार्ट कमांड सेट कर सकते हैं fish


4

मैक ओएसएक्स (सिएरा) की ताजा स्थापना पर मेरे लिए यह काम:

  1. वर्तमान उपयोगकर्ता को गोले के स्वामी के रूप में परिभाषित करें
sudo chown $(whoami) /etc/shells
  1. मछली को / etc / गोले में जोड़ें
sudo echo /usr/local/bin/fish >> /etc/shells
  1. मछली को अपने डिफ़ॉल्ट शेल को chsh के साथ बनाएं
chsh -s /usr/local/bin/fish
  1. गोले के मालिक के रूप में जड़ को फिर से परिभाषित करें
sudo chown root /etc/shells

2
heimdall:~ leeg$ dscl
Entering interactive mode... (type "help" for commands)
 > cd /Local/Default/Users/
/Local/Default/Users > read <<YOUR_USER>>
[...]
UserShell: /bin/bash
/Local/Default/Users >

बस उस मान को बदलें (राइट कमांड के साथ dscl)।


लेग रीड पढ़ने पर मुझे यह त्रुटि मिलती है: <dscl_cmd> DS Error: -14136 (eDSRecordNotFound)
Léo Léopold Hertz

1
हाँ। ऐसा इसलिए है क्योंकि लेग मेरा यूज़रनेम है, आपका नहीं: पी

0

मामले में आपको अन्य तरीकों से परेशानी हो रही है, मैक मोजवे पर काम किया है, लेकिन आम तौर पर काम करना चाहिए।

which fish

"सिस्टम प्राथमिकताएं> उपयोगकर्ता और समूह> राइट क्लिक उपयोगकर्ता, उन्नत विकल्प" से आउटपुट पथ जोड़ें, जिसके परिणामस्वरूप "ऑनलाइन शेल" में पेस्ट करें।


0

मैक पर अपने डिफ़ॉल्ट शेल को बदलने के लिए निम्नलिखित चलाएँ:

chsh -s <name-of-shell>

आपके द्वारा चुने जा सकने वाले गोले की सूची इस प्रकार है:

  1. / Bin / bash
  2. / Bin / csh
  3. / Bin / पानी का छींटा
  4. / Bin / ksh
  5. / Bin / श
  6. / Bin / tcsh
  7. / Bin / zsh

इसलिए यदि आप / bin / zsh शेल से बदलना चाहते हैं, तो आपकी कमांड इस तरह दिखाई देगी:

chsh -s /bin/zsh

आप चलाकर अपने सिस्टम पर सभी उपलब्ध गोले देख सकते हैं:

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