इसके अलावा, क्या ये चर हमेशा लॉग-इन उपयोगकर्ता नाम (वे मेरे डेबियन सिस्टम पर करते हैं) से मेल खाते हैं? क्या मैं अन्य यूनिक्स (जैसे) सिस्टम में उनकी उपलब्धता मान सकता हूं?
मुझे यह भी उत्सुकता है कि इनमें से whoami
किसी भी चर को पढ़ने के बजाय एक का उपयोग क्यों किया जाएगा ।
USER
और USERNAME
साधारण पर्यावरण चर हैं, जिसका अर्थ है कि, यदि आप चाहें, तो आप उन्हें मनमाना मान दे सकते हैं। बस टाइप करें USER=xyz
। दूसरे शब्दों में, भले ही वे चर मौजूद हों, इस बात की कोई गारंटी नहीं है कि उनके मूल्य वर्तमान में लॉग-इन उपयोगकर्ता नाम से मेल खाते हैं।
guarantee
, मेरा मतलब डिफ़ॉल्ट रूप से है (अर्थात उपयोगकर्ता ने उन्हें नहीं बदला)।
sudo whoami
औरsudo echo $USER
sudo echo $USER
, शेल का विस्तार होता है $USER
, फिर कॉल करता है sudo
। तो निश्चित रूप से यह उतना ही उत्पादन नहीं करता है whoami
। जैसे sudo whoami
, sudo sh -c 'echo $USER'
(आमतौर पर) आउटपुट होता है root
। ईयूआईडी का उपयोग करने के बारेwhoami
में आपकी टिप्पणी के बारे में , ध्यान दें कि यूआईडी का उपयोग करने पर भी sudo whoami
आउटपुट होगा । यह चलाने के लिए EUID और UID दोनों को सेट करता है (बहुत असामान्य स्थिति को छोड़कर जो आप इसे अन्यथा व्यवहार करने के लिए स्पष्ट रूप से कॉन्फ़िगर करते हैं)। से तुलना करें । root
whoami
sudo
sudo id -u
sudo id -ru
man
पृष्ठ को देखते हुए ,whoami
आपके प्रभावी उपयोगकर्ता आईडी से जुड़े नाम की रिपोर्ट करता है। इसका मतलब यह है कि अगर आपsudo
एक सेतु निष्पादन योग्य का उपयोग कर रहे हैं या चल रहे हैं तो यह कुछ अलग लौटाएगा । यदि आपनेsudo
सेट किया है, तोsudo whoami
उदाहरण के लिए प्रयास करें ।