मेरे पथ पर एक बाइनरी जोड़ें


15

मेरे पास एक निष्पादन योग्य है। मैं टर्मिनल में निष्पादन योग्य को केवल अन्य कमांड की तरह नाम के साथ निष्पादित करना चाहता हूं।

मैं अपने निष्पादन में डाल सकते हैं /usr/local/binया मैं अपने जोड़ सकते हैं PATHकरने के लिए ~/.bashrc। दोनों काम करेंगे।

क्या बेहतर है? क्या कोई अंतर है?

जवाबों:


12

उदाहरण के लिए मुझे मान लें, आपके पास एक निष्पादन योग्य है myscript। आपको इसे टर्मिनल से चलाने की आवश्यकता है,

/path/to/myscript

उपयोगकर्ता स्तर बदलें

यदि आप PATHउस निष्पादन योग्य को जोड़ते हैं ~/.bashrc, तो आप निष्पादन योग्य को केवल नाम से कहीं से भी चला सकते हैं ( अविनाश राज पहले ही उल्लेख किया गया है),

myscript

लेकिन परिवर्तन उपयोगकर्ता के स्तर पर प्रभावित होगा । इसका मतलब है कि यदि आपके पास कोई अन्य उपयोगकर्ता है, तो वे केवल नाम के साथ निष्पादन योग्य का उपयोग नहीं कर सकते हैं। यदि उनके पास उचित अनुमति है, तो उन्हें निष्पादन योग्य चलाने की आवश्यकता है,

/path/to/myscript

इसके अलावा, आप स्क्रिप्ट को सुडो के रूप में चलाने में सक्षम नहीं होंगे क्योंकि यह PATHरूट में नहीं है , जैसा कि sudoआपको उपयोग करने की आवश्यकता है , चलाने के लिए

sudo /path/to/myscript

सिस्टम स्तर में परिवर्तन

यदि आप इसमें अपनी स्क्रिप्ट डालते हैं, /usr/local/binतो सिस्टम चौड़ा और सभी उपयोगकर्ताओं के लिए एक्सेस किया जा सकता है। उस स्थिति में कोई भी उपयोगकर्ता आपके निष्पादन योग्य (उचित अनुमतियाँ के अधीन) चला सकता है

myscript

उस स्थिति में आप निष्पादन योग्य को sudoभी चला सकते हैं ,

sudo myscript

अब अपनी जरूरत के आधार पर एक रास्ता चुनें।


2

आपकी फ़ाइल में फ़ाइल के स्थान को अपने $PATHचर में जोड़ना ~/.bashrcकेवल आपको किसी भी स्थान से निष्पादित करने की अनुमति देगा, जबकि इसे डालने से /usr/bin/आपके सिस्टम के सभी उपयोगकर्ता किसी भी स्थान से उस फ़ाइल को निष्पादित कर सकेंगे।

ऐसा क्यों है? क्योंकि, आपकी ~/.bashrcफ़ाइल केवल एक उपयोगकर्ता के रूप में आपको दिखाई देती है। इसलिए किए गए सभी परिवर्तनशील परिवर्तन आपके लिए सीमित हैं। जबकि, उस फ़ाइल को जोड़ने /usr/binसे फ़ाइल सभी उपयोगकर्ताओं के लिए वहीं बनी रहेगी और चूँकि चर /usr/binमें मौजूद है $PATHजब तक कि कोई उसे हटा नहीं देता है, सभी उपयोगकर्ताओं को किसी भी स्थान से इसे निष्पादित करने की अनुमति देगा।


1

आप में निष्पादन योग्य फ़ाइल डाल दिया /usr/binया /usr/local/bin, तो आप केवल नाम (निर्दिष्ट द्वारा कि कार्यक्रम चलाने के लिए सक्षम हो जाएगा your-programके बजाय /usr/local/bin/your-program)।

यदि आप इसके बजाय उस निर्देशिका को ~/.bashrcफ़ाइल में प्रोग्राम में शामिल करते हैं PATH, तो उस निर्देशिका में मौजूद कोई भी निष्पादन योग्य फ़ाइल केवल उसका नाम लिखकर लॉन्च की जा सकती है।


1
यह जानकारी गलत है, आप निष्पादन योग्य को लॉन्च कर सकते हैं, भले ही आप "उस निर्देशिका" में न हों।
लीकेन्स्टाइन

यह कैसे गलत है ?, कृपया थोड़ा और समझाएं।
अविनाश राज

1
ठीक है, मुझे आपके उत्तर को पढ़ने में कठिन समय था (और इस तरह एक त्रुटि हुई) इसलिए मैंने भ्रम को दूर करने के लिए इसे संपादित किया और डाउनटाउन को हटा दिया। उम्मीद है कि यह मदद करता है।
लेकेनस्टाइन

तो, सवाल यह है: क्या बेहतर है? क्या कोई अंतर है? आपने व्यावहारिक रूप से ओपी से अधिक कुछ नहीं कहा।
राडू रियडेनू

मैंने ओएस के प्रश्न का उत्तर दिया लेकिन संक्षिप्त प्रारूप में नहीं।
अविनाश राज

0

बस @souravc उत्तर के पूरक के रूप में ...

"उपयोगकर्ता स्तर बदलें" के लिए, ~/.bashrcफ़ाइल को संपादित करने के बजाय आप बस निर्देशिका बना सकते हैं $HOME/bin/और अपनी स्क्रिप्ट को वहां रख सकते हैं।

निर्देशिका स्वचालित रूप से PATH(कम से कम Ubuntu 12.04 के बाद से) जोड़ दी जाएगी, जिसका अर्थ है कि आप उस निर्देशिका के अंदर सभी स्क्रिप्ट / निष्पादनयोग्य को एक साधारण से चला पाएंगे:

myscript

बस मेरे 2 सेंट। :)

PS- मैंने इसे @souravc उत्तर के लिए एक टिप्पणी के रूप में पोस्ट करने की कोशिश की, लेकिन मेरे पास पर्याप्त प्रतिष्ठा नहीं थी। :-(

हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.