मेरे पास एक होस्ट डेबियन सर्वर है। जब मैं ssh के माध्यम से लॉग इन करता हूं, तो मुझे शा माहौल से अभिवादन किया जाता है। मैं इसे कैसे बदलूं ताकि मैं एक बाश वातावरण में शुरू करूं?
मेरे पास एक होस्ट डेबियन सर्वर है। जब मैं ssh के माध्यम से लॉग इन करता हूं, तो मुझे शा माहौल से अभिवादन किया जाता है। मैं इसे कैसे बदलूं ताकि मैं एक बाश वातावरण में शुरू करूं?
जवाबों:
एक नियमित उपयोगकर्ता के रूप में, आप chshकमांड का उपयोग करके अपने डिफ़ॉल्ट लॉगिन शेल को बदल सकते हैं । यहाँ एक उदाहरण है:
chsh -s /bin/bash
एक अन्य विकल्प रूट के रूप में खरपतवार का उपयोग करना है:
usermod -s /bin/bash username
adduser, तो इसे डिफ़ॉल्ट रूप से काटने के लिए सेट करना चाहिए। डिफ़ॉल्ट में कॉन्फ़िगर किया गया है /etc/adduser.conf। अन्यथा खोल को स्पष्ट रूप से निर्दिष्ट करें useradd।
आप संपादित करते हैं /etc/passwdजहां अंतिम प्रविष्टि डिफ़ॉल्ट शेल है। बना लो /bin/bash।
वैकल्पिक रूप से, आप /bin/shबैश नहीं होने के सिस्टम डिफॉल्ट को बदल सकते हैं ।
/bin/shजा रहा है /bin/dash। और जो इसके लायक है अन्य दो उत्तर समान हैं और अलग-अलग तरीकों से एक ही छोर को प्राप्त करते हैं। जो कुछ।
/etc/passwdअत्यधिक हतोत्साहित हैं। एक संपादन गलती सभी उपयोगकर्ताओं के लिए लॉगिन को तोड़ सकती है, मरम्मत के लिए पुनर्प्राप्ति मीडिया या एक बूट उपयोगकर्ता मोड की आवश्यकता होती है। usermodबदलने के लिए जैसे उपकरण हैं /etc/passwd।
/etc/passwd।
/bin/bashके रूप में /bin/shके साथ इसे क्रियान्वित करने के समान ही है --posix, अवांछनीय परिणाम हो सकते हैं जो।
/bin/bashसभी मशीनों पर उन वर्षों में अपने शेल के रूप में उपयोग कर रहा हूं । आपको अधिक ठोस तर्क की आवश्यकता है।
/bin/shहाल के उबंटू रिलीज़ में डिफ़ॉल्ट सिस्टम शेल को कॉन्फ़िगर किया गया है /bin/dash। केवल निम्नलिखित कमांड चलाकर:
sudo dpkg-reconfigure dash
आप इसे पुराने डिफ़ॉल्ट में बदल सकते हैं /bin/bash।
इसके साथ, आप bashकिसी भी उपयोगकर्ता सेटिंग्स (नहीं chshया usermod) को बदलने के बिना इंटरैक्टिव शेल के रूप में वांछित प्रभाव प्राप्त कर सकते हैं , और यह उन सभी उपयोगकर्ताओं के लिए काम करेगा जिनके पास वर्तमान में शेल सेट है /bin/sh।
इसके लिए केवल एक छोटा सा पहलू है: उबंटू बूट का समय थोड़ा बढ़ सकता है, क्योंकि dashलोड करने के लिए कम मेमोरी और चलाने के लिए थोड़ा तेज होता है (कोई आश्चर्य नहीं - यह सुविधाओं में इतना सीमित है)। लेकिन मुझे लगता है कि इस प्रभाव को मापना मुश्किल होगा, खासकर पर्यावरण की मेजबानी के लिए।
इसके अलावा, कभी-कभी शेल स्क्रिप्ट देखने के लिए यह कष्टप्रद होता है कि वे ठीक से काम करने में विफल होते हैं क्योंकि वे कुछ bashउन्नत सुविधाओं का उपयोग करते हैं जो कि समर्थित नहीं हैं dash। इस नुस्खे के इस्तेमाल से यह सुनिश्चित हो जाएगा कि ऐसा नहीं होगा।
अधिक जानकारी के लिए, इस समस्या के बारे में Ubuntu विकी देखें ।
/bin/shPOSIX संगत शेल स्क्रिप्ट के लिए दुभाषिया के रूप में उपयोग किया जाता है - यह जरूरी नहीं कि सबसे अच्छा इंटरैक्टिव शेल हो; यदि आप bashअपना सिस्टम शेल बनना चाहते हैं , तो आपको अपने पसंदीदा लॉगिन शेल का उपयोग करके chshया उचित adduserकॉल सेट करना चाहिए । उपयोग dpkg-reconfigureकरना एक बुरा विकल्प है यदि userA zsh चाहता है और userB चाहता है और दोनों अपने डिफ़ॉल्ट शेल के रूप में बिन / श होने पर जोर देते हैं।
zsh, और userB के पास bashउनके पास होगा। यदि उपयोगकर्ता के लिए कॉन्फ़िगर किया गया है sh, तो उसके पास bashनए यूजर्स के लिए वैसे भी उबंटू डिफॉल्ट वर्तमान होगा
dpkg-reconfigure zshसेट करने के लिए zshके रूप में / bin / श, और फिर dpkg-reconfigure dashसेट करने के लिए dashके रूप में / bin / श जो एक गतिरोध की तरह है, मैं मुख्य रूप से यह कह रहा हूं कि एक अच्छा लॉगिन शेल बनाने / बिन / श करने के लिए हुप्स के माध्यम से उपयोग करने के बजाय उस शेल को लॉगिन शेल सेट करना अधिमानतः है।
dpkg-reconfigure dashबना सकते हैं । अन्य सभी गोले अभी भी बरकरार रहेंगे। shbashdash
उस मामले के लिए जहां आप एक साझा खाते (जो भी कारण से) का उपयोग करने का प्रयास कर रहे हैं और डिफ़ॉल्ट शेल को बदल नहीं सकते हैं, तो आप चला सकते हैं
ssh -t <user@hostname> bash -l
यदि आपको अपने पर्यावरण को किसी अन्य शेल से रखने की आवश्यकता है, तो आप पहले उस शेल को चला सकते हैं; उदाहरण के लिए
ssh -t <user@hostname> ksh -c bash -l
-lविकल्प क्यों ?