इसके अलावा, क्या ये चर हमेशा लॉग-इन उपयोगकर्ता नाम (वे मेरे डेबियन सिस्टम पर करते हैं) से मेल खाते हैं? क्या मैं अन्य यूनिक्स (जैसे) सिस्टम में उनकी उपलब्धता मान सकता हूं?
मुझे यह भी उत्सुकता है कि इनमें से 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 दोनों को सेट करता है (बहुत असामान्य स्थिति को छोड़कर जो आप इसे अन्यथा व्यवहार करने के लिए स्पष्ट रूप से कॉन्फ़िगर करते हैं)। से तुलना करें । rootwhoamisudosudo id -usudo id -ru
manपृष्ठ को देखते हुए ,whoamiआपके प्रभावी उपयोगकर्ता आईडी से जुड़े नाम की रिपोर्ट करता है। इसका मतलब यह है कि अगर आपsudoएक सेतु निष्पादन योग्य का उपयोग कर रहे हैं या चल रहे हैं तो यह कुछ अलग लौटाएगा । यदि आपनेsudoसेट किया है, तोsudo whoamiउदाहरण के लिए प्रयास करें ।