जब मैं अपने सर्वर में ssh'ing कर रहा हूं तो मैं bash में कैसे शुरू कर सकता हूं?


29

मेरे पास एक होस्ट डेबियन सर्वर है। जब मैं ssh के माध्यम से लॉग इन करता हूं, तो मुझे शा माहौल से अभिवादन किया जाता है। मैं इसे कैसे बदलूं ताकि मैं एक बाश वातावरण में शुरू करूं?

linux  bash  debian  sh 

1
वास्तव में एक प्रोग्रामिंग सवाल नहीं है। भविष्य में, आप शायद यूनिक्स / लिनक्स पर इस तरह के सवाल पूछेंगे ।
tylerl

जवाबों:


33

एक नियमित उपयोगकर्ता के रूप में, आप chshकमांड का उपयोग करके अपने डिफ़ॉल्ट लॉगिन शेल को बदल सकते हैं । यहाँ एक उदाहरण है:

chsh -s /bin/bash

एक अन्य विकल्प रूट के रूप में खरपतवार का उपयोग करना है:

usermod -s /bin/bash username

1
usermod ने एक आकर्षण की तरह काम किया। क्या कोई तरीका है कि जब मैं एक नया उपयोगकर्ता जोड़ूं, तो मुझे डिफ़ॉल्ट रूप से सेट किया जा सके या क्या मुझे हर बार कमांड चलाना होगा?

यदि आप उपयोग करते हैं adduser, तो इसे डिफ़ॉल्ट रूप से काटने के लिए सेट करना चाहिए। डिफ़ॉल्ट में कॉन्फ़िगर किया गया है /etc/adduser.conf। अन्यथा खोल को स्पष्ट रूप से निर्दिष्ट करें useradd
जोर्डन

5

आप संपादित करते हैं /etc/passwdजहां अंतिम प्रविष्टि डिफ़ॉल्ट शेल है। बना लो /bin/bash

वैकल्पिक रूप से, आप /bin/shबैश नहीं होने के सिस्टम डिफॉल्ट को बदल सकते हैं ।


1
यो, ड्राइव-डाउन डाउनवॉट के साथ क्या हो रहा है? उदाहरण के लिए Ubuntu करने के लिए डिफ़ॉल्ट करता /bin/shजा रहा है /bin/dash। और जो इसके लायक है अन्य दो उत्तर समान हैं और अलग-अलग तरीकों से एक ही छोर को प्राप्त करते हैं। जो कुछ।
डिर्क एडल्डबुलेटेल

4
मैन्युअल संपादन /etc/passwdअत्यधिक हतोत्साहित हैं। एक संपादन गलती सभी उपयोगकर्ताओं के लिए लॉगिन को तोड़ सकती है, मरम्मत के लिए पुनर्प्राप्ति मीडिया या एक बूट उपयोगकर्ता मोड की आवश्यकता होती है। usermodबदलने के लिए जैसे उपकरण हैं /etc/passwd
जोर्डन

1
बकवास। '94 के बाद से यहाँ लिनक्स चल रहा है। कभी पर्दाफाश नहीं किया /etc/passwd
डिर्क एडल्डबुलेटेल

2
सुनकर अच्छा लगा आप बहुत सावधान रहे। सभी के पास नहीं है। अपने अद्यतन पर एक और नोट, शुरू करने /bin/bashके रूप में /bin/shके साथ इसे क्रियान्वित करने के समान ही है --posix, अवांछनीय परिणाम हो सकते हैं जो।
जोर्डन

देखिए, मैं 1995 से डेबियन डेवलपर / मेंटेनर भी हूं। हम एक डिफ़ॉल्ट के रूप में बैश करते थे, हमने विभिन्न कारणों से सरल गोले में स्विच किया। मैं /bin/bashसभी मशीनों पर उन वर्षों में अपने शेल के रूप में उपयोग कर रहा हूं । आपको अधिक ठोस तर्क की आवश्यकता है।
डिर्क एडल्डबुलेटेल

2

आपको अपनी उपयोगकर्ता प्रोफ़ाइल को संपादित करने की आवश्यकता है, आप इसे सीधे /etc/passwdफ़ाइल को संपादित करके कर सकते हैं, या आप इसे करने के लिए usermodकमांड का उपयोग कर सकते हैं । आप जिस वाक्यविन्यास की तलाश कर रहे हैं वह कुछ इस तरह दिखता है:

usermod -s /bin/bash joeuser

1

/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 चाहता है और दोनों अपने डिफ़ॉल्ट शेल के रूप में बिन / श होने पर जोर देते हैं।
umläute

यदि userA को स्पष्ट रूप से कॉन्फ़िगर किया गया है zsh, और userB के पास bashउनके पास होगा। यदि उपयोगकर्ता के लिए कॉन्फ़िगर किया गया है sh, तो उसके पास bashनए यूजर्स के लिए वैसे भी उबंटू डिफॉल्ट वर्तमान होगा
mvp

यकीन है, लेकिन अपने समाधान कुछ पसंद सुझाव dpkg-reconfigure zshसेट करने के लिए zshके रूप में / bin / श, और फिर dpkg-reconfigure dashसेट करने के लिए dashके रूप में / bin / श जो एक गतिरोध की तरह है, मैं मुख्य रूप से यह कह रहा हूं कि एक अच्छा लॉगिन शेल बनाने / बिन / श करने के लिए हुप्स के माध्यम से उपयोग करने के बजाय उस शेल को लॉगिन शेल सेट करना अधिमानतः है।
umläute

मैंने केवल यह कहा है कि अपंग होने के बजाय बिंदु dpkg-reconfigure dashबना सकते हैं । अन्य सभी गोले अभी भी बरकरार रहेंगे। shbashdash
mvp

1

उस मामले के लिए जहां आप एक साझा खाते (जो भी कारण से) का उपयोग करने का प्रयास कर रहे हैं और डिफ़ॉल्ट शेल को बदल नहीं सकते हैं, तो आप चला सकते हैं

ssh -t <user@hostname> bash -l

यदि आपको अपने पर्यावरण को किसी अन्य शेल से रखने की आवश्यकता है, तो आप पहले उस शेल को चला सकते हैं; उदाहरण के लिए

ssh -t <user@hostname> ksh -c bash -l

यह बहुत अच्छा काम करता है, लेकिन -lविकल्प क्यों ?
nbkhope

@nbkhope यह सुनिश्चित करेगा कि .bashrc आपके लिए चलाया जाए।
UKMonkey
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.