जब मैं नया शेल चलाता हूं तो $ SHELL क्यों नहीं बदलता है?


14
 $ echo $SHELL
/bin/bash
 $ /bin/ksh93
 $ echo $SHELL
/bin/bash
 $ file /bin/ksh93
/bin/ksh93: ELF 64-bit LSB executable, x86-64, version 1 (SYSV), 
dynamically linked (uses shared libs), for GNU/Linux 2.6.8, stripped

 $ getent passwd test111
test111:x:1008:1008:,,,:/tmp:/bin/ksh93
 $ ssh test@localhost
test@localhost's password:
 $ echo $SHELL
/bin/ksh93
 $ bash
 $ echo $SHELL
/bin/ksh93

मुझे $SHELLएक और शेल चलाने के बाद बदलाव की उम्मीद है । क्यों नहीं होता?

पुनश्च हालांकि शेल बदलता है, केवल $ SHELL वैरिएबल वही रहता है:

 $ dash
 $ echo $SHELL
/bin/bash
 $ T=test ; [[ $T = *est ]] && echo ok
dash: [[: not found

2
echo $0वर्तमान शेल प्राप्त करने के लिए उपयोग करें
Manula Waidyanatha

जवाबों:


13

आपको इस चर को बदलने की उम्मीद नहीं करनी चाहिए। इसका उपयोग आपके डिफ़ॉल्ट शेल के पथ को संग्रहीत करने के लिए किया जाता है, अर्थात पासवर्ड डेटाबेस में संग्रहीत होता है, न कि वह कौन सा शेल जो आप वर्तमान में चला रहे हैं।


8

SHELLहै POSIX द्वारा निर्दिष्ट । का हवाला देते हुए:

शेल यह चर उपयोगकर्ता के पसंदीदा कमांड भाषा दुभाषिया के एक मार्गनाम का प्रतिनिधित्व करेगा। [...]

एक अलग शेल चलाने से उपयोगकर्ता की वरीयता में बदलाव का संकेत नहीं मिलता है।

उन चीजों के प्रकारों को सीखना अच्छा है, जो POSIX निर्दिष्ट करते हैं और जहां उनके लिए सबसे अधिक खोज की जाती है। PixIX अनुपालन के लिए .nix सिस्टम का लक्ष्य है। पर्यावरण चर उन चीजों में से एक हैं।


-3

शेल चर आपके सत्र के लिए मूल शेल को संग्रहीत करता है , जो कभी-कभी आपके डिफ़ॉल्ट लॉगिन शेल से मेल खाता है । $ SHELL वह मूल शैल है, जिसने वर्तमान सत्र को जन्म दिया।

इसलिए, अगर मैं अपने उपयोगकर्ता के लिए बैश का उपयोग करता हूं और ऐसा करता chsh -s /bin/zsh userहूं : जब मैं करता हूं echo $SHELL, तो प्रदर्शित शेल अभी भी होगा BASH

देखना यह लेख


4
आपके द्वारा लिंक किया गया लेख गलत है। वह दूसरा तरीका है, अर्थात SHELL आपके डिफ़ॉल्ट लॉगिन शेल (अंतिम लॉगिन समय पर) को संग्रहीत करता है जो कभी-कभी आपके मूल शेल से मेल खाता है। यह चर आपके माता-पिता या वर्तमान शेल द्वारा कभी भी संशोधित नहीं किया गया है। एकमात्र क्रिया जो वे कर सकते हैं अगर वह (अप्रत्याशित रूप से) परेशान है।
jlliagre
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.