चश $ शैल नहीं बदलता है


9

मुझे $SHELLOSX के iTerm ऐप के मूल्य को बदलने में कुछ कठिनाइयां आ रही हैं । iTerm शुरू हो रहा है /bin/zsh, लेकिन मूल्य में $SHELLपरिवर्तन नहीं दिखता है।

मैंने क्या किया:

  1. "कमांड" को /bin/zshiTerm के कॉन्फ़िगरेशन विंडो में बदल दिया ।
  2. chshखोल को बदलने के लिए निष्पादित /bin/zsh
  3. पुष्टिमृत iTerm में शुरू किया गया है /bin/zsh

नोट # 1: OSX के स्टॉक टर्मिनल ऐप में, "Terminal.app":

echo $SHELL
/bin/zsh

नोट # 2: OSX के लोकप्रिय टर्मिनल ऐप, "iTerm.app" में:

$ echo $SHELL
/bin/bash

$ echo $USER
$ melvkim

$ chsh -s /bin/zsh
Changing shell for melvkim.
Password for melvkim:
chsh: no changes made

1
में देखा है /etc/shells? मैनुअल बताता है कि यदि आपके द्वारा निर्दिष्ट शेल उस फ़ाइल में नहीं है, तो इसे एक मानक शेल नहीं माना जाता है।
बॉब डलगिश

जवाबों:


5

समस्या शेल के साथ "iTerm" ऐप की परस्पर विरोधी सेटिंग थी। हल करने के लिए, मैंने iTerm प्राथमिकता विंडो में "लॉगिन शेल" कमांड रीसेट किया है:

iTerm.app -> प्राथमिकताएँ -> प्रोफ़ाइल -> सामान्य -> ​​कमांड -> "लॉगिन शेल" पर क्लिक करें

फिर, मैंने chshइसे संशोधित करने के लिए निष्पादित किया /bin/zsh

समस्या को पुन: उत्पन्न करने के लिए ($ शेल सेट होने के /bin/bash/बावजूद, भले ही लॉगिन शेल हो /bin/zsh), मुझे बस "iTerm" सेटिंग को "कमांड: / बिन / zsh /" पर वापस बदलना होगा।


1

-sके लिए झंडा chshकेवल प्रयास खोल बदलने के लिए, और शायद खुली निर्देशिका के कारण विफल रहता है: हमेशा की तरह यूनिक्स प्रणाली 'chsh' को संशोधित करेगा /etc/passwdप्रविष्टि। हालाँकि, मैं chshबिना किसी तर्क के साथ चलने में सक्षम था , जिसने मुझे एक संपादक और निम्नलिखित जानकारी दी:

# Changing user information for nevin.
# Use "passwd" to change the password.
##
# Open Directory: /Local/Default
##
Shell: /bin/tcsh
Full Name: Nevin Williams
Office Location:
Office Phone:
Home Phone:

मैं "शेल:" प्रविष्टि को संपादित करने में सक्षम था /bin/zshऔर बाद में टर्मिनल विंडो एक जेड-शेल प्रॉम्प्ट के साथ खोला गया।


मैंने chshबिना किसी परेशानी के कोशिश की । फिर भी नसीब नहीं। चर नहीं बदलता है। वास्तव में, जब संपादक लोड किया गया था, तो यह दिखा /bin/zsh
मेल्विनकिम

संपादक के साथ शेल को बदलने का प्रयास करें। मैंने मुझे एक स्क्रीन कैप्चर / बिन / tsh से / bin / zsh और बैक में बदल दिया। bonmot.ca/~nevin/chsh.mov
नेविन विलियम्स

अपना समय रिकॉर्ड करने के लिए आपका धन्यवाद पोस्ट करने के लिए आपका बहुत बहुत धन्यवाद! आपके समाधान को अन्य टर्मिनल एमुलेटर पर काम करने वाला माना जाता है, लेकिन मुझे $SHELLiTerm पर बदलने के लिए एबिल नहीं था । कृपया विवरण के लिए मेरे उत्तर को देखें .. धन्यवाद!
मेल्विनकिम

1

उन्नयन समस्या के संबंध में @ mklement0 [द्वारा पोस्ट की गई उत्कृष्ट व्याख्या और समाधान के लिए यहां देखें bash

मुझे अपने सिस्टम (OS X 10.10.1) के विपरीत काम करने में इसी तरह की समस्या थी: bashमैंने स्थापित करने के बाद फिर से डिफ़ॉल्ट लॉगिन शेल oh-my-zshबनाया, जिसने zshडिफ़ॉल्ट बनाया , और फिर bashहोमब्रेव का उपयोग करके 3.2.53 से 4.3.30 तक अपग्रेड किया ( क्यों Apple एक पुराने bashसंस्करण के साथ Yosemite शिपिंग है ?)।

मुझे लगता है कि SHELLपर्यावरण चर प्रतिबिंबित करता है लेकिन उपयोगकर्ता के लिए वास्तविक डिफ़ॉल्ट लॉगिन शेल को नियंत्रित नहीं करता है । उदाहरण के लिए, यदि, कहा जाए, तो bashआपका डिफ़ॉल्ट था और आप bashटर्मिनल से एक नई शेल विंडो खोलते हैं, फिर $ export SHELL="/bin/zsh"; echo "$SHELL"दिखाएगा /bin/zshलेकिन कोई वास्तविक परिवर्तन नहीं होगा क्योंकि यदि आप टर्मिनल से एक नई शेल विंडो खोलते हैं और ऐसा करते हैं, $ echo $0तो आप देखेंगे -bash( $0नाम और पथ सम्‍मिलित है) कमांड की जिसने शेल विंडो शुरू की, इस मामले में bash, और इसके -बगल में यह इंगित करता है कि यह एक लॉगिन शेल है)।

जैसा कि @ mklement0 ने बताया कि उपयोगकर्ता के लिए वास्तविक डिफ़ॉल्ट लॉगिन शेल UserShellसिस्टम के आंतरिक डेटाबेस में उपयोगकर्ता के रिकॉर्ड में संपत्ति द्वारा नियंत्रित किया जाता है - यह कमांड लाइन उपयोगिता का उपयोग करके अद्यतन और अद्यतन किया जा सकता है dscl। शेल विंडो खोलते ही यह जानकारी आपके टर्मिनल ऐप पर पहुंच जाएगी।

इसे सेट करने के लिए chsh -s /bin/zshइस UserShellसंपत्ति को क्या बदल रहा है zsh- आप इसे dscl . -read /Users/$USER/ UserShellतुरंत बाद में जांच कर सकते हैं , और आप देखेंगे UserShell: /bin/zsh। लेकिन परिवर्तन वर्तमान विंडो में प्रभावित नहीं होता है, जब तक आप exec su - $USER@ mklement0 द्वारा सुझाए गए अनुसार कुछ नहीं करते हैं , या जब तक आप खोल विंडो को बंद और खोल नहीं देते हैं।


0

कमांड निष्पादित करने का प्रयास करें: chsh -s /bin/zshडिफ़ॉल्ट मैक टर्मिनल से।


1
यह ओपी से अलग क्या करता है?
JMY1000

@ JMY1000 यदि आप iTerm से उस कमांड को निष्पादित करने का प्रयास करते हैं, तो परिवर्तन प्रतिबिंबित नहीं होते हैं। आपको इसे मैक के डिफ़ॉल्ट टर्मिनल से निष्पादित करके काम करने में सक्षम होना चाहिए।
मोहितमयंक
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.