क्या कोई मुझे बता सकता है कि मेरे सिस्टम में कौन सा खोल स्थापित है?
क्योंकि जब मैं अपने उपयोगकर्ता नाम का उपयोग कर अपने सिस्टम में लॉग इन कर रहा हूं तो यह शुरुआत में बैश खोल दिखा रहा है लेकिन बाद में यह सूडो करने के बाद कॉर्न खोल दिखा रहा है।
जानकारी के लिए कृप्या नीचे देखें।
-bash-3.2$ pwd
/home/w4x2spxt
-bash-3.2$ echo $SHELL
/bin/bash
-bash-3.2$ su - XXXXXXX
Password:
You have new mail.
The Oracle base remains unchanged with value /apps/oracle
abc0300ab123:/a30/home/XXXXXXX >> echo $SHELL
/bin/ksh
उत्तर:
उत्तर № 1 के लिए 1SHELL
पर्यावरण चर आपको अपना लॉगिन खोल देता है।
अपने उपयोगकर्ता नाम के विरुद्ध उल्लिखित खोल पथ (अंतिम कॉलम) की जांच करें या XXXXXXX
(के लिये su
) में /etc/passwd
इस तरह: grep ^XXXXXXX /etc/passwd
.
जब आप लॉगिन करते हैं या उस उपयोगकर्ता के लिए su करते हैं तो उस फ़ाइल में उल्लिखित खोल आपका डिफ़ॉल्ट खोल होगा।
अपने सिस्टम पर सभी स्थापित गोले को जांचने के लिए इसका उपयोग करें: cat /etc/shells
जवाब के लिए 0 № 2
आपका उपयोगकर्ता उपयोग कर रहा है
/bin/bash
डिफ़ॉल्ट खोल के रूप में।जड़ का उपयोग कर रहा है
/bin/ksh
इसके डिफ़ॉल्ट खोल के रूप में।
डिफ़ॉल्ट खोल उपयोगकर्ता-विशिष्ट सेटिंग है, इसलिए उपयोगकर्ताओं के बीच अलग-अलग होने में कुछ भी नहीं है। बस अंतिम कॉलम की जांच करें /etc/passwd
और अपने आप को विभिन्न मूल्यों से आश्चर्यचकित करें।
इस तरह से ध्यान दें कि जब आप करते हैं su
, आप रूट के रूप में लॉग इन करें। यदि आप डैश जोड़ते हैं और कहते हैं su -
आप रूट प्रोफाइल लोड कर रहे हैं, ताकि आपके पास पर्यावरण हो।
जवाब के लिए 0 № 3
पर्यावरण परिवर्तनीय SHELL
इसमें लॉग इन किए गए उपयोगकर्ता का लॉगिन खोल हमेशा होता है /etc/passwd
.
यदि उपयोगकर्ता लॉगिन के बाद अपना खोल बदलता है exec bash
(bash
), द SHELL
अभी भी लॉगिन खोल में विस्तार होगा।
आपके मामले में, उपयोगकर्ता XXXXXXX
लॉगिन खोल है /bin/ksh
, करना:
grep "<user_name>" /etc/passwd
परिणामों से मेल खाने के लिए।
वर्तमान खोल खोजने के लिए:
echo $0
या
ps -p $$
जवाब के लिए 0 № 4
जब आप ऐसा करते हैं:
-bash-3.2$ su - XXXXXXX
आप जो भी खोल को उपयोगकर्ता को सौंपा गया है शुरू कर रहे हैं XXXXXXX
। यह आमतौर पर एक अच्छी बात है su -
, क्योंकि यह लॉगिन प्रक्रिया के रूप में अपना खोल चलाता हैतो आप उनके सामान्य खोल स्टार्टअप प्रारंभिक (प्रोफ़ाइल, * shrc, आदि) मिलता है। यदि आप उनके खाते से एक अलग खोल चलाते हैं, तो संभवतः आप उनके सभी अनुकूलन को याद करते हैं।
आप देख सकते हैं कि पासवर्ड डेटाबेस में उन्हें देखकर खाते से कौन सा खोल जुड़ा हुआ है। यह विभिन्न प्रकार के सिस्टम और प्रमाणीकरण योजनाओं में काफी भरोसेमंद है:
perl -MUser::pwent -le "print( (getpwnam "XXXXXXX")->shell || "/bin/sh" )"
यदि आप किसी को ध्यान में रखते हैं तो आप हमेशा एक शेल को अन्य उपयोगकर्ता के रूप में स्पष्ट रूप से चला सकते हैं:
su XXXXXXX -c "bash --login"
या
sudo -u XXXXXXX bash --login # if you have sudo privs
यह देखने के लिए कि आप किस शैल को वर्तमान में चल रहे हैं, देखें $0
:
echo $0
यह देखने के लिए कि आप डिफ़ॉल्ट रूप से किस शेल को प्राप्त करते हैं, देखें $SHELL
.