मैं उबंटू पर अपना डिफ़ॉल्ट शेल कैसे बना सकता हूं?


101

.bash_profileमेरी होम निर्देशिका में एक है, लेकिन यह लॉगिन पर नहीं चल रहा है। यदि मैं निम्नलिखित कार्य करता हूं, तो चीजें वैसी ही प्रतीत होती हैं जैसी मैं अपेक्षा करता हूं:

ssh myhost
bash
source ~/.bash_profile

लेकिन आम तौर पर यह सब लॉगिन पर होता है। विचार?


3
यह भी सुनिश्चित करें कि आपके पास ~/.profileया तो नहीं है ~/.bash_login, क्योंकि तीन में से केवल एक ही है। (मैं सटीक आदेश भूल गया।)
विशाल

3
आपको शीर्षक में एक अलग प्रश्न और आपके पोस्ट के शरीर में अलग-अलग एक क्यों है?
पाबूक

जवाबों:


170

उपयोग:

chsh

अपना पासवर्ड दर्ज करें और जिस शेल का आप उपयोग करना चाहते हैं उसका पथ बताएं।

बैश के लिए जो होगा /bin/bash। Zsh के लिए जो होगा /usr/bin/zsh


15
+1 - निश्चित नहीं है कि ओपी ने फैसला क्यों किया कि पासवर्ड फ़ाइल को संपादित करना एक बेहतर विकल्प था, लेकिन यह सबसे अच्छा जवाब है
kdgregory

1
हाँ मुझे इसके लिए हरा दो, यह मानक तरीका है।
जॉन टी

1
और ubuntu जिस शेल का आप उपयोग करना चाहते हैं उस पर रास्ता है ... / बिन / बैश (और / बिन / श ही नहीं है)
हैरी वुड

49
या आप उपयोग कर सकते हैंsudo chsh -s /bin/bash username
ओलेग वासकेविच

7
इस परिवर्तन को देखने के लिए आपको लॉग आउट और लॉग इन करना होगा।
नील ट्राफट

37

अकीरा के उत्तर के ऊपर, आप अपने डिफ़ॉल्ट शेल को निर्दिष्ट करने के लिए अपनी / etc / passwd फ़ाइल को संपादित कर सकते हैं ।

आपको इस उदाहरण की एक पंक्ति मिलेगी:

john:x:1000:1000:john,,,:/home/john:/bin/sh

खोल अंत में निर्दिष्ट है।


8
अकीरा द्वारा सुझाए गए 'chsh' कमांड का उपयोग करने के लिए बेहतर है - गलती से कुछ पेंच करने का कम मौका।
लार्स हग्सथ

5
'chsh' का उल्लेख तब नहीं है जब आप
quack quixote

1
लेकिन अगर आपके पास इसे संशोधित करने की पहुंच है /etc/passwdऔर आप सावधान हैं, तो जॉन का जवाब उन उपकरणों का अच्छा उपयोग कर रहा है जो सिस्टम प्रदान करता है।
एजेपी

3
इस परिवर्तन को देखने के लिए आपको लॉग आउट और लॉग इन करना होगा।
नील ट्राफट

2
यदि आप उपयोगकर्ता पासवर्ड के बिना एक सर्वर चला रहे हैं - केवल सार्वजनिक / निजी ssh कुंजी के माध्यम से पहुँच प्रदान करना ... यह भी बहुत मायने रखता है। chsh को पासवर्ड की आवश्यकता होती है।
कीथ जॉन हचिसन

4

आप अपने टर्मिनल प्रोग्राम की जांच कर सकते हैं। इसे / bin / bash के बजाय रन / bin / sh में कॉन्फ़िगर किया जा सकता है

बैश केवल लॉगिन सत्र के लिए .bash_profile निष्पादित करता है। .bashrc को सभी सत्रों के लिए निष्पादित किया जाता है, न केवल लॉगिन सत्रों को। सोर्सिंग .bash_profile से .bashrc (गोलाकार निर्भरता से बचें!) या शेल प्रोग्राम के रूप में / बिन / बैश -l चलाने के लिए अपने टर्मिनल प्रोग्राम को कॉन्फ़िगर करने का प्रयास करें।


2
टर्मिनल प्रोग्राम का समस्या से कोई लेना देना नहीं है क्योंकि यह रिमोट मशीन पर sshd है, जो नए शेल को जन्म देता है।
अकीरा

2

एक विकल्प यह है कि अपने स्टार्टअप स्क्रिप्ट को .profile में नाम बदलें। यह फ़ाइल अधिकांश यूनिक्स गोले द्वारा स्रोत है ।


2

बैश सक्षम करें:

$ /bin/bash

उपयोगकर्ता के लिए शेल बदलें:

$ sudo usermod -s /bin/bash username

कहाँ पे:

  -s, --shell SHELL             new login shell for the user account

2
(1) "बैश इनेबल" से आपका क्या मतलब है? (2) उपयोगकर्ता रिमोट सिस्टम पर अपना लॉगिन शेल बदलना चाहता है। आप यह क्यों मानते हैं कि sudoउस प्रणाली पर उसकी पहुँच है? किसी अन्य उपयोगकर्ता के लॉगिन शेल को बदलने के संदर्भ में आप निर्देश क्यों प्रदान करते हैं?
जी-मैन

चश का उपयोग करना (जैसा कि ऊपर सुझाव दिया गया है) मेरे लिए काम नहीं करता था। इस कमांड ने किया!
प्रति लिंडबर्ग

1

किसी भी शेल को अपना डिफ़ॉल्ट बनाने के लिए, पहले यह सत्यापित करें कि यह आपके कंप्यूटर पर स्थापित और मान्यता प्राप्त है /etc/shells:

$ cat /etc/shells
# /etc/shells: valid login shells
/bin/sh
/bin/bash
/usr/bin/bash
/bin/rbash
/usr/bin/rbash
/bin/dash
/usr/bin/dash
/usr/bin/fish

फिर chshअपने शेल को बदलने के लिए उपयोग करें:

$ sudo chsh -s /usr/bin/bash $(whoami) # or sudo chsh -s /bin/bash $(whoami)

संदर्भ

  1. https://linux.die.net/man/1/cat
  2. https://linux.die.net/man/1/whoami
  3. https://linux.die.net/man/5/shells
  4. https://linux.die.net/man/1/chsh

0

मेरे लिए आपके प्रश्न में पर्याप्त जानकारी सुनिश्चित करने के लिए नहीं है, लेकिन मैंने पहले भी यही समस्या बताई है। मान लें कि आपने पहले से ही अपने पासवर्ड प्रविष्टि में / बिन / बैश सेट कर लिया है, यह आपके टर्मिनल लॉन्च करने का तरीका हो सकता है।

यदि आप GUI टर्मिनल लॉन्च करने का प्रयास कर रहे हैं, तो कह gnome-terminalसकते हैं कि आप अपने बैश स्टार्टअप फ़ाइलों को पढ़ने के लिए शेल की अपेक्षा कर सकते हैं। हालाँकि, यह डिफ़ॉल्ट रूप से उबंटू और शायद अन्य प्रणालियों पर नहीं होता है।

जिस तरह से मैंने इसे उबंटू पर तय किया है वह सूक्ति-टर्मिनल वरीयताओं को संपादित करने के लिए है, और होने के लिए स्टार्टअप कमांड सेट करें bash -l-lके लिए छोटा है --login। यह स्टार्टअप को लॉगिन शेल के रूप में बैश बताता है, जो इसे एसएचएस के माध्यम से लॉग इन करते समय स्टार्टअप स्क्रिप्ट को लोड करने का कारण बनता है।

मुझे यकीन है कि इस तरह से होने के लिए एक अच्छा तर्क है, लेकिन मुझे यह आश्चर्यजनक और थोड़ा परेशान करने वाला लगा, क्योंकि मैं लिनक्स, साइबर और मैकोस सिस्टम में समान प्रोफाइल साझा करता हूं।

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