हाइफ़न के साथ और उसके बिना "सु" के बीच क्या अंतर है?


86

मैं लिनक्स टर्मिनल के लिए काफी नया हूं और मुझे इस बात पर बिल्कुल यकीन नहीं है कि suहाइफ़न के साथ और हाइफ़न के suबिना क्या अंतर है, उदाहरण के लिए: su - usernameबनाम su username

मैंने डॉक्यूमेंटेशन में देखा , लेकिन इसमें इसका उल्लेख नहीं था। क्या कोई मेरी मदद कर सकता है?


एक "लॉगिन शेल" का अर्थ अक्सर इंटरैक्टिव शेल होता है। यह बनाम एक शेल है जो केवल एक स्क्रिप्ट निष्पादित करता है और बाहर निकलता है।
शहबाज

6
यह वहीं है जहाँ आप उसी लिंक पर हैं : " -, -l, --login: शेल को एक लॉगिन शेल
बनाते हैं

1
आपको इसे गूगल करने की जरूरत नहीं है, बस टाइप करें su --help
कला शायडरोव

1
Noteworthyness की: यह, विशेष रूप से उपयोगी के रूप में hypen का उपयोग कर एक नया प्रवेश खोल शुरू करने के लिए बिना जड़ तक जब सु-इंग है अपने $PATHअद्यतन नहीं हो जाएगी और इस प्रकार आप सीधे में जड़-केवल बाइनरी कॉल करने के लिए सक्षम नहीं होगा /sbinऔर/usr/sbin
गैरेट

जवाबों:


84

"-" और "नो हाइफ़न" के बीच का अंतर यह है कि उत्तरार्द्ध आपके मौजूदा वातावरण (चर, आदि) को बनाए रखता है ; पूर्व एक नया वातावरण बनाता है (वास्तविक उपयोगकर्ता की सेटिंग्स के साथ, आपका अपना नहीं)।

https://wiki.archlinux.org/index.php/Su

हाइफ़न के दो प्रभाव हैं:

1) उस उपयोगकर्ता के रूप में लॉग इन करके वर्तमान निर्देशिका से नए उपयोगकर्ता के होम निर्देशिका (जैसे, रूट उपयोगकर्ता के मामले में रूट) पर स्विच करता है।

2) अपने ~ / .bashrc द्वारा तय किए गए नए उपयोगकर्ता के लिए पर्यावरण चर बदलता है। यही है, अगर मुकदमा करने का पहला तर्क एक हाइफ़न है, तो वर्तमान निर्देशिका और वातावरण को बदल दिया जाएगा जो कि उम्मीद की जाएगी यदि नए उपयोगकर्ता ने वास्तव में एक नए सत्र (केवल मौजूदा सत्र को संभालने के बजाय) पर लॉग ऑन किया हो।


इस साइट -> admon.org/difference-between-login-shell-and-non-login-shell का कहना है कि जब हाइफ़न के बिना उपयोग किया जाता है / etc / profile और ~ / .bash_profile को निष्पादित नहीं किया जाता है। उपयोगकर्ता पर्यावरण पर इन दो फ़ाइलों का क्या महत्व है?
user574183

2
वे दो चीजें हैं जो उपयोगकर्ता के वातावरण को निर्धारित करती हैं :) उनका निष्पादन नहीं करने का मतलब है कि आपके मूल वातावरण को बनाए रखना । उन्हें निष्पादित करना ("-" का उपयोग करके) का अर्थ है कि आप अपने वातावरण को उसी तरह बना रहे हैं जैसा कि उपयोगकर्ता आपके लिए "su'ing" कर रहे हैं। हाइफ़न का उपयोग आमतौर पर आप क्या चाहते हैं - मैं उपयोग करता हूं "-" आदतन जब भी मैं "सु" करता हूं।
पल्सम ४

क्या वास्तव में फांसी का आदेश मायने रखता है? Iam यह पूछ रहा है क्योंकि उस साइट पर उन्होंने उल्लेख किया है कि दो फ़ाइलों / etc / bashrc ~ / .bashrc को एक गैर लॉगिन शेल में होने पर रिवर्स ऑर्डर में निष्पादित किया जाता है। कोई मेरी मदद करें
user574183

1
@ निश्चित रूप से user574183, जैसे एक सेट कुछ लेकिन अन्य को सेट किए बिना कुछ या कुछ और करने के लिए सेट करता है, तो
fikr4n

3

su -रूट के लिए एक लॉगिन शेल शुरू करता है। एक सामान्य शेल के अंतर के लिए, उदाहरण के लिए इस साइट को देखें।


2
यह सच है, लेकिन यह सवाल नहीं है :)
paulsm4

यह गलत है, आप एक डैश के साथ र चला सकते हैं और यह एक अलग उपयोगकर्ता के लिए एक शेल शुरू कर सकता है। निम्नलिखित को निष्पादित करें और आउटपुट देखेंsudo su - "testuser" -c "whoami"
डेविड हेरगर्ट

@DavidHergert हां, और उपयोगकर्ता नाम के बिना यह रूट के लिए एक खोल खोलता है।
लार्स कोथॉफ

@LarsKotthoff - ठीक है, क्षमा करें, जिस तरह से इसे शब्दबद्ध किया गया था मानो यह लगता है कि पानी का छींटा यह एक मूल खोल बनाता है, इस तथ्य से नहीं कि उपयोगकर्ता को रूट करने के लिए चूक। यहां तक ​​कि मेरे स्थानीय निवासी एसए ने मुझे इस पर भ्रमित किया। :)
डेविड हेरगर्ट १२'१५ को ०:२५
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.