मेरे पास एक होस्ट डेबियन सर्वर है। जब मैं 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/sh
POSIX संगत शेल स्क्रिप्ट के लिए दुभाषिया के रूप में उपयोग किया जाता है - यह जरूरी नहीं कि सबसे अच्छा इंटरैक्टिव शेल हो; यदि आप 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
बना सकते हैं । अन्य सभी गोले अभी भी बरकरार रहेंगे। sh
bash
dash
उस मामले के लिए जहां आप एक साझा खाते (जो भी कारण से) का उपयोग करने का प्रयास कर रहे हैं और डिफ़ॉल्ट शेल को बदल नहीं सकते हैं, तो आप चला सकते हैं
ssh -t <user@hostname> bash -l
यदि आपको अपने पर्यावरण को किसी अन्य शेल से रखने की आवश्यकता है, तो आप पहले उस शेल को चला सकते हैं; उदाहरण के लिए
ssh -t <user@hostname> ksh -c bash -l
-l
विकल्प क्यों ?