मान लीजिए, मैंने एक टर्मिनल खोला और कुछ शेल कमांड्स को प्रविष्ट / निष्पादित किया।
लेकिन मैंने स्पष्ट रूप से बैश या किसी अन्य शेल का आह्वान नहीं किया।
डिफ़ॉल्ट रूप से किस शेल का उपयोग किया गया था?
मान लीजिए, मैंने एक टर्मिनल खोला और कुछ शेल कमांड्स को प्रविष्ट / निष्पादित किया।
लेकिन मैंने स्पष्ट रूप से बैश या किसी अन्य शेल का आह्वान नहीं किया।
डिफ़ॉल्ट रूप से किस शेल का उपयोग किया गया था?
जवाबों:
आपकी लाइन में निर्दिष्ट एक /etc/passwd(यह एक :अलग लाइन है और शेल अंतिम एक है)।
उदाहरण के लिए मेरा:
chris:x:1000:1000:Chris,,,:/home/chris:/bin/bash
यह यहाँ है /bin/bash(उबंटू डिफ़ॉल्ट)
आप यह भी उपयोग कर सकते हैं chsh:
$ chsh
Password:
Changing the login shell for chris
Enter the new value, or press ENTER for the default
Login Shell [/bin/bash]:
यह मुझे बता रहा है कि मेरा खोल है /bin/bashऔर मुझे इसे बदलने की अनुमति देता है।
अंत में, echo $SHELLवही करेंगे:
$ echo $SHELL
/bin/bash
sudo netstat -an | grep LISTEN | grep -v ^unix। मुझे लगता है कि एक बैश उपखंड में घेरने का कोई कारण नहीं दिखता है।
sudo bash -c "..."यह सुनिश्चित करेगा कि पूरे पाइप को रूट द्वारा निष्पादित किया गया है।
commandA | sudo commandB | commandC, तो आप sudo idपहले कर सकते हैं ( idकमांड को चलाता है root, लेकिन " पासवर्ड प्रॉम्प्ट के बिना
chshतो आपको यह परिवर्तन देखने के लिए लॉग आउट और लॉग इन करना होगा ।
GNU बैश उबंटू पर टर्मिनलों में डिफ़ॉल्ट रूप से उपयोग किया जाने वाला खोल है। हालाँकि जब सिस्टम बूट पर स्क्रिप्ट निष्पादित की जाती है तो डैश का उपयोग किया जाता है, क्योंकि यह डैश है जो कि / bin / sh है।
यह $ SHELL पर्यावरण चर में परिभाषित किया गया है। आप echo $SHELLटर्मिनल में टाइप करके देख सकते हैं ।
निम्नलिखित टाइप करके प्रदर्शित होगा कि टर्मिनल किस खोल के साथ खोला गया है:
echo $SHELL
हालांकि, यह पता लगाने के लिए कि आप वर्तमान में किस शेल में हैं (आप इसे बदल सकते हैं) प्रकार
ps -p $$
उदाहरण के लिए, आप देखेंगे कि शेल उदाहरण आउटपुट में बैश है
PID TTY TIME CMD
3500 pts/0 00:00:01 bash
एक अन्य विधि का उपयोग करना है
echo $0
यह केवल वर्तमान शेल का नाम लौटाएगा।
echo $0
डिफ़ॉल्ट रूप से यह बैश है:
env | grep ^SHELL=
ज्यादातर मामलों में उत्पादन होगा
SHELL=/bin/bash
useradd, तो यह चूक करता है sh। $ useradd -D|grep SHELL SHELL=/bin/sh।
वर्तमान शेल निष्पादन योग्य की फ़ाइल पथ प्राप्त करने के लिए कोई भी उपयोग कर सकता है
readlink -f /proc/$$/exe
कुछ संभावित आउटपुट निम्न हैं:
/bin/bash/usr/bin/bash/usr/bin/zsh/home/stan/.linuxbrew/Cellar/zsh/5.2/bin/zsh