मैं एक अज्ञात शेल से बैश में कैसे स्विच करूं?


41

मुझे आश्चर्य हुआ कि मुझे यह प्रश्न साइट पर पहले से नहीं मिला। इसलिए, $नए उपयोगकर्ता के रूप में लॉग इन करने के बाद आज आया। यह अप्रत्याशित था क्योंकि मेरे मुख्य उपयोगकर्ता का संकेत इसके साथ शुरू होता है username@computername:~$

तो, मैं इस अन्य शेल से बैश में कैसे स्विच करूं?


8
सिर्फ इसलिए कि $बल्कि आया से username@computername:~$मतलब नहीं है कि यह पार्टी नहीं था। प्रॉम्प्ट का सटीक स्वरूपण PS1 चर द्वारा सेट किया गया है, जिसे अलग-अलग उपयोगकर्ताओं के लिए अलग से सेट या अनुकूलित किया जा सकता है।
2

3
@mouche पुन: @frabjous echo $SHELLपता लगाने के लिए कि आपका वर्तमान शेल क्या है।
एक्सनोटेरासाइड

1
@mouche @frabjous और एक $ के साथ शुरुआत वास्तव में बैश के लिए आम है, कुछ गैर बैश गोले जैसे zsh बॉक्स से% का उपयोग करते हैं, मेरा मानना ​​है कि अन्य गोले अन्य चीजों का उपयोग करते हैं।
एक्सनोटेरासाइड

1
@ /bin/shआम तौर पर अक्सर इसका मतलब यह नहीं होता है कि आमतौर पर किसी और चीज के लिए एक सहिष्णुता है। मैं ls -l /bin/shयह देखना चाहता हूं कि यह किसके लिए सहानुभूति है। कुछ मामलों में कुछ के साथ सहानुभूति होने के कारण उसके व्यवहार में बदलाव आता है, मुझे नहीं लगता कि बैश वह तरीका है।
xenoterracide

3
@xenoterracide - कई बैश सुविधाओं bashको /bin/sh निष्क्रिय करने के रूप में (यह POSIX अनुपालन मोड में चला जाता है)।
क्रिस डाउन

जवाबों:


61

यह मानते हुए कि अज्ञात शेल एक निरपेक्ष कमांड चलाने का समर्थन करता है, आप कोशिश कर सकते हैं: /bin/bash

डिफ़ॉल्ट शेल को बदलने के लिए, मैं उपयोग करूंगा chsh(1)। नमूना उपयोग:chsh -s /bin/bash $USER


1
क्या chsh स्थायी रूप से शेल को परिवर्तित करता है या केवल वर्तमान सत्र के लिए?
mouche

10
@ माउच परमानेंटली; यह में अपने प्रवेश को बदलता है/etc/passwd
माइकल Mrozek

@mouche, chsh(1)केवल एक शेल में बदलने की अनुमति देगा जो /etc/shells(और उपलब्ध है, संभवतः) में सूचीबद्ध है । chsh -lविकल्पों को सूचीबद्ध करता है। सावधान रहें, कुछ (जैसे nologin) उन खातों के लिए परिभाषित किए गए हैं जिनका उपयोग कभी भी लॉगिन करने के लिए नहीं किया जाना चाहिए (खुद को बाहर निकालने का अच्छा तरीका), विशेष उपयोगों के लिए स्थानीय जोड़ हो सकते हैं।
वॉनब्रांड

19

आप में टाइप bash। यदि आप चाहते हैं कि यह /bin/bashसंपादन द्वारा डिफ़ॉल्ट शेल को स्थायी रूप से बदल दे /etc/passwd

यहाँ कुछ स्निपेट मेरे से हैं /etc/passwd:

avahi:x:84:84:Avahi daemon:/:/bin/false
xenoterracide:x:1000:100::/home/xenoterracide:/bin/zsh
postgres:x:88:88::/var/lib/postgres:/bin/zsh
bob:x:1001:1001::/home/bob:/bin/bash
usbmux:x:140:140:usbmux user:/:/sbin/nologin

बहुत अंतिम फ़ील्ड में शेल होता है, अंतिम के बाद फ़ील्ड को संशोधित :करने के लिए एक वैध या अमान्य शेल काम करेगा। /bin/falseऔर /sbin/nologinदोनों का अर्थ है कि उपयोगकर्ता के पास एक वास्तविक लॉगिन शेल नहीं है, हालांकि यदि पैम सही नहीं है तो इसका मतलब यह नहीं है कि वे लॉगिन नहीं कर सकते हैं (मैंने आर्क लिनक्स में इस पर एक बग की सूचना दी है, क्योंकि आप बिना ग्राफ़िकल रूप से लॉगिन कर सकते हैं एक लॉगिन शेल)। /bin/bashऔर /bin/zshदोनों वैध गोले हैं, /etc/shellsअपने सिस्टम पर मान्य गोले की सूची देखें । /etc/shellsयदि आप रुचि रखते हैं तो यहाँ मेरा है ।

/bin/sh
/bin/bash
/bin/ksh
/bin/zsh
/bin/dash

हां, आप समान चीजों का उपयोग कर सकते हैं chshया कर सकते usermodहैं, कृपया याद रखें कि ये केवल संरचित पाठ फ़ाइलें और TIMTOWTDI हैं।


11
आप शायद का उपयोग करना चाहते chshबजाय मैन्युअल रूप से संपादित कीpasswd
माइकल Mrozek

@ मायकिल में लगभग 5 (POOMA) शेल को बदलने के अलग-अलग तरीके /etc/passwdहैं, मुझे उनमें से किसी को सूचीबद्ध करने का मन नहीं था, क्योंकि मैं हमेशा इसे मैन्युअल रूप से करता हूं। chsh और usermod दोनों इसे कर सकते हैं।
एक्सनोटेरासाइड

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

12

यदि chsh या मैन्युअल रूप से एडिटिंग से कॉन्फिगर नहीं होगा, लेकिन एक ~ / .profile स्क्रिप्ट लॉगिन पर निष्पादित की जाती है, इस लाइन को जोड़ें:

exec /bin/bash --login

थोड़ी देर तक इधर-उधर देखने के बाद मुझे यही उपाय चाहिए था। धन्यवाद!
पियर्सनआर्टफोटो 13

महान विचार, विशेष रूप से अगर शेल ने स्टार्टअप पर फाइल करने वाले स्रोतों का चयन किया ...
vonbrand

touch ~/.bash_profileया अन्यथा बैश खुद को एक लूप में निष्पादित करेगा: बैश ~/.profileमामले में ~/.bash_profileमौजूद नहीं है।
हर-वदीम
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.