मैं मैक ओएस एक्स में अपना शेल कैसे सेट करूं?


21

मुझे पता है कि मैं टर्मिनल प्राथमिकताओं में "खोल के साथ खोल" सेट कर सकता हूं, लेकिन अगर यह स्थापित करने का कोई सिस्टम-वाइड तरीका है (कुछ यूनिक्स में अपडेट / आदि / पास के समान) तो मैं उत्सुक हूं।

जवाबों:


24

chshउपयोगिता का उपयोग करें जैसे:

chsh -s bash

उदाहरण के लिए लिनक्स में देखे गए ऐप्पल ने chshमैक ओएस एक्स पर थोड़ा बदलाव किया है chsh। आप उनके बारे में chsh Mac OS X Man पेज पर पढ़ सकते हैं ।


और यहाँ मैंने सोचा कि यह कुछ OSX- विशिष्ट उपयोगिता के साथ जटिल था, हेह। धन्यवाद।
नाग

@ जोहान - अच्छी तरह से सीखा :)
akira

हाँ, मैं पिछली बार भी इसका जवाब जानता था, मैं बस इसके लिए पिट गया था! :(
जॉन टी।

19

ध्यान दें कि आपको केवल सूचीबद्ध शेल में बदलने की अनुमति होगी /etc/shells। यह सामान्य रूप से ठीक है, लेकिन इसका मतलब है कि यदि आप बैश 4 को स्थापित करना चाहते हैं (होमब्रेव, मैकपोर्ट्स से, या अपने खुद के संकलन), तो आपको एक पंक्ति जोड़ने की आवश्यकता है /etc/shells। (मैं कुछ हफ्ते पहले इसमें भाग गया, और लगा कि इससे दूसरों को जानने में मदद मिल सकती है ...)

संपादित करें : टिम स्मिथ बताते हैं कि /etc/shellsयदि आप chshरूट के माध्यम से रन करते हैं, तो आप सीमा के आसपास प्राप्त कर सकते हैं sudo। ईजी sudo chsh -s /usr/local/bin/my_shell $USERकाम करेगा, भले ही my_shellवह सूचीबद्ध न हो /etc/shells। मैं संपादित करना पसंद करता हूं /etc/shells, लेकिन अंत में, यह एक sudoतरह से उपयोग है क्योंकि आप /etc/shellsएक नियमित उपयोगकर्ता के रूप में संपादित नहीं कर सकते हैं । तो शायद छह में से एक, दूसरे का आधा दर्जन।


/etc/shellsअगर आपको नहीं करना है तो परिवर्तन क्यों ? पवित्रता के लिए, मैं सिस्टम फ़ाइलों को समान रखना पसंद करता हूं।
ma11hew28

@MattDiPasquale मुझे यकीन नहीं है कि आप "पवित्रता" से क्या मतलब है। /etc/shellsसिस्टम पर फ़ाइल है जो मान्यता प्राप्त गोले को परिभाषित करता है। मैं उस फ़ाइल को बदल देता हूं क्योंकि मैं किसी शेल को मान्यता प्राप्त शेल की सूची में जोड़ना चाहता हूं। मुझे बहुत उचित लगता है।
टेलीमेकस

अच्छी ऊंचाई। वैसे, किसी कारण से मेरे लिए chsh काम नहीं करेगा। मुझे यह मिल गया ; chsh: bash: non-standard shell
RyBolt

@RyBolt अधिकार: कारण शायद वही है जिसका मैं उत्तर में उल्लेख करता हूं। chshयदि आप उस शेल का उपयोग करने का प्रयास नहीं कर रहे हैं जो किसी ऐसे शेल का उपयोग करने का प्रयास कर रहा है जो सूचीबद्ध नहीं है /etc/shells
टेलीमेकस

@Telemachus, मैं मूल बैश शेल को बदलने की कोशिश कर रहा था जो मेरे डिफ़ॉल्ट मैक OSX बिल्ड के साथ आया था। शायद ऐसा नहीं है, /etc/shellsजिसमें मुझे अजीब लगे।
RyBolt

10

Mac OS X GUI का उपयोग करने के लिए:

  1. "सिस्टम वरीयताएँ" खोलें।
  2. "खाता" / "उपयोगकर्ता और समूह" वरीयता फलक खोलें और यदि लागू हो तो वरीयता फलक खोलें।
  3. आप जिस उपयोगकर्ता को शेल बदलना चाहते हैं, controlउस उपयोगकर्ता पर + क्लिक या राइट क्लिक करें और "उन्नत विकल्प ..." चुनें
  4. जहाँ यह कहता है कि "लॉगिन शेल:" इसे उस शेल में बदलें जिसे आप उपयोग करना चाहते हैं।

ध्यान दें, यह वह स्थान है जहां आप अपने घर की निर्देशिका, यूयूआईडी, उपयोगकर्ता आईडी, समूह आईडी और संक्षिप्त नाम बदल सकते हैं यदि आप टर्मिनल के साथ असहज हैं। इसी तरह का सवाल यहां भी है।


5

उपरोक्त उत्तरों का उपयोग करने से मुझे एक त्रुटि संदेश मिल रहा था:

$ chsh -s zsh
Changing shell for myuser.
Password for myuser:
chsh: zsh: non-standard shell

इसके आसपास काम करने के लिए:

sudo chsh -s zsh $(whoami)

whoami एक उपधारा में अपने उपयोगकर्ता के लिए शेल को बदलना है, न कि रूट को।

एक और बात अगर आप homebrew का उपयोग कर रहे हैं। जब आप कमांड को रूट (उपयोग करते हुए sudo), zsh को / bin / zsh पर चलाते हैं, जो OSX के साथ आता है और पुराना हो सकता है। होमब्रेव के माध्यम से स्थापित होने वाली तारीख तक का उपयोग करने के लिए, निम्नलिखित का उपयोग करें:

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