मुझे कमांड लाइन एप्लिकेशन कहां स्टोर करना चाहिए?


46

जब मैं कमांड लाइन एप्लिकेशन डाउनलोड करता हूं तो वे मेरी ~/Downloads/निर्देशिका में स्थित होते हैं । लेकिन मुझे लगता है कि यह एक गलत जगह है कमांड लाइन आवेदन स्थित है। मैक ओएस एक्स फाइलसिस्टम में मुझे कमांड लाइन एप्लिकेशन कहां स्टोर करना चाहिए?

/Applications/यह भी गलत लगता है, यह डेस्कटॉप अनुप्रयोगों के लिए अधिक है। और /bin/उन अनुप्रयोगों के लिए अधिक लगता है जो ओएस एक्स के अंतर्गत आता है।


मैं आपकी भावना से सहमत हूं कि चीजों को सीधे / बिन या / एप्लिकेशन में डालना आमतौर पर खराब रूप है। पैट्रिक्स का जवाब सबसे विहित स्थान है जो मैंने कार्यक्रमों और लिपियों के सामान्य कमांड लाइन भंडारण के लिए देखा है।
bmike

डुप्लिकेट: Apple.stackexchange.com/q/80902/20459
rm

2
मैं इन्हें डुप्लिकेट के रूप में नहीं देखता हूं क्योंकि लिंक किए गए प्रश्न कई थर्ड पार्टी विकल्पों की बाजीगरी के बारे में अधिक लगते हैं और यह अधिक शुद्ध है - जहां मेरे मैन्युअल रूप से डाउनलोड किए गए ऐप चलते हैं।
bmike

जवाबों:


44

चूंकि ओएस एक्स एक यूनिक्स विरासत से आता है, आप /usr/local/binकमांड लाइन एप्लिकेशन और स्क्रिप्ट के लिए सिस्टम फ़ाइलों को संग्रहीत करना चाहेंगे जो स्थानीय रूप से सिस्टम से संबंधित हैं और एक विशिष्ट उपयोगकर्ता के लिए नहीं। आपको पहले इस निर्देशिका को बनाने की आवश्यकता हो सकती है:

sudo mkdir -p /usr/local/bin

आप किसी भी कमांड लाइन एप्लिकेशन को उस फ़ोल्डर में ले जा सकते हैं:

sudo mv my-binary /usr/local/bin/

यह सुनिश्चित करने के लिए कि /usr/local/binटर्मिनल में आपके मानक खोज पथ का हिस्सा है, /etc/pathsयदि आवश्यक हो तो सामग्री की जाँच करें और इसे जोड़ें:

grep -w /usr/local/bin /etc/paths || sudo sh -c 'echo /usr/local/bin >> /etc/paths'

कुछ उपयोगकर्ता उपयोगकर्ता स्तर की स्क्रिप्ट के लिए एक दूसरी निर्देशिका बनाते हैं, लेकिन यह व्यक्तिगत प्राथमिकता के लिए और भी अधिक विषय है।

मैं आमतौर पर प्रत्येक उपयोगकर्ता फ़ोल्डर में एक बिन निर्देशिका बनाता हूं और फिर इसे फाइंडर से छिपाता हूं - लेकिन आप खुद यह निर्णय ले सकते हैं कि क्या आप इसे छिपाना चाहते हैं:

 mkdir ~/bin
 chflags hidden ~/bin

इस स्थिति में, आप चाहते हैं कि प्रत्येक उपयोगकर्ता के पथ में शेल स्टार्टअप स्क्रिप्ट को संशोधित करके यह स्थान शामिल हो ( ~/.bash_profileबैश के लिए जो मानक शेल है)

 export PATH=$PATH:~/bin

या जब आप इसे चलाते हैं, तो प्रत्येक ऐप को पथ कोडिंग करके।


3
यह पूरी तरह से सबसे अच्छा सुझाव है, और वह जो मैं किसी को भी दूंगा। मैं केवल 2 चीजों को जोड़ूंगा: 1) /etc/launchd.conf भी एक ऐसी जगह हो सकती है जहाँ पथ को जोड़ने की आवश्यकता है, 2) हालाँकि मैं उपयोग करता हूँ / usr / स्थानीय / यूनिक्स बर्तनों के माध्यम homebrewसे अपनी स्वयं की शेल स्क्रिप्ट के लिए स्थापित करता हूँ। एक ~ / ड्रॉपबॉक्स / बिन / जो मैंने अपने $ PATH में भी जोड़ा है इसलिए मेरे सभी मैक पर मेरे सभी कस्टम शेल स्क्रिप्ट हैं। लेकिन मैं इसके बजाय / usr / स्थानीय / बिन / नहीं के अलावा ऐसा करता हूं।
टीजे लुओमा

/ usr / स्थानीय / bin है एक उपयोगकर्ता के स्क्रिप्ट के लिए पारंपरिक यूनिक्स स्थान है, जो सिस्टम पर किसी अन्य उपयोगकर्ता को पहुँच देता है। वहां लिपियों को रखने से सभी उपयोगकर्ताओं के पैठों में लिपियों को सहजता से डाला जा सकेगा। लेकिन मेरा मानना ​​है कि मैक तरीका, चूंकि अधिकांश मैक का एक ही उपयोगकर्ता है, एक निर्देशिका बनाना है, इसे अदृश्य बनाना है , और उपयोगकर्ताओं को इसे $ PATH का हिस्सा बनाने के लिए उपयोगकर्ताओं के साथ जोड़ना है । सुरक्षा और प्रवासन के लिए एक बेहतर स्थान है। अन्यथा, आपको उस सामान के बारे में याद रखना होगा जिसे आपने / usr / लोकल / बिन में छोड़ा है। और अच्छा भी है। ~/binchflags uchg ~/bin~/.bash_profile~/binln -s ~/bin ~/Dropbox/
चिलिन

7

एक /optनिर्देशिका बनाने पर विचार करें , जो एक अन्य स्थान है जो कस्टम यूनिक्स सॉफ्टवेयर सम्मेलन द्वारा दिखाई देगा।


5
/opt/पूर्ण अनुप्रयोगों के लिए बहुत उपयोगी है जबकि /usr/local/bin/स्टैंडअलोन कमांड लाइन स्क्रिप्ट के लिए अधिक उपयुक्त है। अक्सर /opt/ऐसे उदाहरणों में उपयोग करना बेहतर होता है जहां संबंधित स्क्रिप्ट का एक संग्रह एक पुस्तकालय (जैसे /opt/myscriptslib/bin/) के रूप में कार्य करता है ।
plasmid87

आपकी सलाह के लिए Thanx। मैंने अपने सॉफ़्टवेयर को डालने के लिए व्यक्तिगत रूप से फ़ोल्डर / ऑप्ट / बनाया और फिर मैंने सभी निष्पादनयोग्य के लिए बस / usr / स्थानीय / बिन को प्रतीकात्मक लिंक बनाया ... फिर पथ पर्यावरण चर में / ऑप्ट / myspecific-soft को जोड़ने की कोई आवश्यकता नहीं है ।
рüффп
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.