2009-10-27 8 views
28

अगर मैं सूडो के साथ शेल स्क्रिप्ट चलाता हूं तो मैं सही $ USER कैसे प्राप्त करूं?

मैं उन्हें मैक इंस्टॉल पैकेज में पोस्टस्क्रिप्ट स्क्रिप्ट के रूप में चलाता हूं, जहां वे स्वचालित रूप से सूडो-एड होते हैं, लेकिन मुझे उपयोगकर्ता नाम के साथ सामान करने की आवश्यकता होती है।

$ HOME सही है, हालांकि। घर के रास्ते से नाम निकालने के लिए सुरुचिपूर्ण विधि होगी, लेकिन मुझे आश्चर्य है कि ऐसा करने का एक प्राकृतिक तरीका है या नहीं।

मैं स्क्रिप्ट को कॉल करने के तरीके को प्रभावित नहीं कर सकता, क्योंकि यह इंस्टॉलर के अंदर एक स्वचालित कॉल है।

उत्तर

30

मेरे सिस्टम पर परिवर्तनीय $SUDO_USER कॉलर के उपयोगकर्ता नाम पर सेट है।

आपको उपयोगकर्ता नाम ${HOME} चर से सीधे निकालना नहीं चाहिए। यह कॉन्फ़िगर किया जा रहा है और गणना नहीं की जा रही है। उपयोगकर्ता नाम निकालने के लिए आप /etc/passwd फ़ाइल में एक नज़र डाल सकते हैं, लेकिन यह बहुत सिस्टम निर्भर है, उदा। कभी-कभी आपको एलडीएपी निर्देशिका में देखना पड़ता है या प्रविष्टियां एनआईएस के माध्यम से प्रचारित होती हैं ...

+1

यहां लैंडिंग लोगों के लिए क्योंकि gnome-टर्मिनल 'लॉगनाम' के लिए समर्थन छोड़ दिया गया है, ऐसा लगता है कि यह अच्छी तरह से '$ (लॉगनाम 2>/dev/null || echo $ SUDO_USER) काम करता है। मैकोज़ पर भी परीक्षण किया गया। बग रिपोर्ट: https://bugzilla.gnome.org/show_bug.cgi?id=747046 – tresf

17

परिवर्तनीय SUDO_USER का निरीक्षण करें।

http://www.gratisoft.us/sudo/man/sudo.html#environment

एक और तरीका है उपयोगकर्ता पाने के लिए जो आदेश के माध्यम से है। यह कभी-कभी उपयोगी होता है जब आप परवाह नहीं करते हैं कि उपयोगकर्ता ने सूड किया है या नहीं।

who -m | awk '{print $1;}' 
9

SUDO_USER पोर्टेबल नहीं है। यह फेडोरा 17 पर अनसेट है।

$USER और $UID चर या तो सूडो का आह्वान करते समय अनुमानित नहीं हैं। कुछ distros sudoer की रिपोर्ट, दूसरों रूट उपयोगकर्ता की रिपोर्ट।

यह किसी भी तरह से सही नहीं है, लेकिन आप test -w ~root && echo I have write access to ~root का उपयोग कर सकते हैं।

15

आप $(logname) का उपयोग कर सकते हैं, जो आपके लॉगिन नाम को वापस लौटाता है भले ही आप वर्तमान में सूड कर रहे हों।

+5

भावी googlers के लिए; यह स्वीकार्य उत्तर होना चाहिए, यह ओएसएक्स, डेबियन और सेंटोस पर काम करता है। भविष्य में आप और अन्य Googlers के लिए – Knetic

+2

@ चुंबकीय, यह नहीं हो सकता है: https://bugzilla.gnome.org/show_bug.cgi?id=747046 – muru

+0

यह उबंटू 16.04.1 एलटीएस – Adnan

संबंधित मुद्दे