ओएस एक्स - एक व्यक्तिगत बिन निर्देशिका (~ / बिन) बनाएं और अपने पूर्ण पथ को निर्दिष्ट किए बिना स्क्रिप्ट चलाएं


19

तो, मैं जो करने की कोशिश कर रहा हूं वह binमेरे होम फ़ोल्डर में एक व्यक्तिगत निर्देशिका बनाने के लिए है । मैंने निम्नलिखित फ़ोल्डर बनाया:

/Users/thi/bin

मैंने अपनी स्क्रिप्ट इस फ़ोल्डर में रखी, लेकिन अगर मैं टर्मिनल में टाइप करता हूँ:

myScript

यह नहीं चलता है।

मुझे बताया गया था कि मुझे इस बिन पथ को निर्यात करना है, इससे संबंधित कुछ echo $PATH, लेकिन मुझे नहीं पता कि यह कैसे करना है।


के अंत में यह भी देखना apple.stackexchange.com/a/98626
nohillside

जवाबों:


20

आपको फ़ाइल में निम्नलिखित जोड़ने की आवश्यकता है ~/.profile:

export PATH=/Users/thi/bin:$PATH

फिर source ~/.profile

ध्यान दें, कि आपको यह फ़ाइल बनाने की आवश्यकता हो सकती है, और क्योंकि यह इसके साथ शुरू होता है, .यह एक पाठ संपादक जैसे एप्लिकेशन के माध्यम से संपादन के लिए खोजक में दिखाई नहीं दे सकता है। छिपी हुई सहित सभी फाइलों को सूचीबद्ध करने के लिए, उपयोग करें:

ls -la ~/

अगर मैं निर्यात PATH = / Users / thi / bin: $ PATH को अपनी .bashrc फ़ाइल में जोड़ता हूं, तो क्या यह काम करने वाला है? क्या यह सही है?
थी जी

12
के $HOME/binबजाय बेहतर उपयोग /Users/thi/bin। फिर आप अपनी सेटिंग्स को किसी अन्य मशीन पर कॉपी कर पाएंगे, जहाँ आपका उपयोगकर्ता नाम शायद अलग है।
lhf

यदि मैं टर्मिनल में टाइप करता हूं: PATH = $ HOME / bin: $ PATH और फिर टाइप करें: PATH निर्यात करें। क्या यह चाल चलेगा?
थि। जी।

1
यदि आप ऐसा करते हैं, तो यह अब सेटिंग्स बदल देगा, लेकिन भविष्य के जूते पर नहीं। रीबूट से बचे तरीके से पथ बदलने के लिए, आपको उन आदेशों को अपनी .profileफ़ाइल में शामिल करना होगा ।
डैनियल

1
महान, जवाब के लिए आप सभी का धन्यवाद। मैंने export PATH=$HOME/bin:$PATHअपने को जोड़ा $HOME/.bash_profile
थि। जी।

10

यदि आप बैश का उपयोग करते हैं, तो इस तरह एक पंक्ति जोड़ें ~/.bash_profile:

PATH=~/bin:$PATH

PATHडिफ़ॉल्ट रूप से निर्यात के लिए चिह्नित है, इसलिए आपको उपयोग करने की आवश्यकता नहीं है export

यदि दोनों ~/.bash_profileऔर ~/.profileमौजूद हैं, तो बैश केवल तभी पढ़ता है ~/.bash_profileजब इसे इंटरेक्टिव लॉगिन शेल के रूप में आमंत्रित किया जाता है। ~/.profileअन्य गोले द्वारा भी उपयोग किया जाता है जो बैश के समान कॉन्फ़िगरेशन विकल्पों को नहीं समझ सकते हैं।

टर्मिनल और iTerm 2 डिफ़ॉल्ट रूप से लॉगिन गोले के रूप में नए गोले खोलते हैं। जब बैश को इंटरेक्टिव लॉगिन शेल के रूप में लगाया जाता है, तो यह पढ़ता है ~/.bash_profileलेकिन नहीं ~/.bashrc। अन्य प्लेटफार्मों पर टर्मिनल एमुलेटर अक्सर गैर-खोल गोले के रूप में नए गोले खोलते हैं, इसलिए उदाहरण के लिए बैश पढ़ता है ~/.bashrcलेकिन नहीं ~/.bash_profile। ओएस एक्स उपयोगकर्ता अक्सर अन्य प्लेटफार्मों पर ~/.bash_profileइसी व्यक्तिगत कॉन्फ़िगरेशन फ़ाइल के रूप में उपयोग करते हैं ~/.bashrc, लेकिन टर्मिनल या iTerm 2 से गैर-खोल गोले के रूप में नए गोले खोलने के लिए स्रोत ~/.bashrcसे ~/.bash_profileया बताना भी आम है ।

आप विश्व स्तर पर /etc/pathsया तो पथ को बदल सकते हैं /etc/launchd.conf, लेकिन कई संदर्भों में पथ अभी भी डिफ़ॉल्ट होगा /usr/bin:/bin:/usr/sbin:/sbin। और मुझे केवल गोले और पाठ संपादकों में पथ बदलने की आवश्यकता है।


महान, उत्तर के लिए thks। मैंने export PATH=$HOME/bin:$PATHअपने को जोड़ा $HOME/.bash_profile
थी जी।

आपको निर्यात की आवश्यकता नहीं है , और दोनों ~(जब अयोग्य) और $HOMEनिर्यात या सादे असाइनमेंट का उपयोग करते समय चर असाइनमेंट से पहले दोनों का विस्तार किया जाता है।
लारी

लॉरी रांटा, आप व्यक्तिगत रूप से क्या पसंद करते हैं, .bash_profileया .profile? या आप .bashrcअपने घर निर्देशिका में है?
थीई।

मैं केवल .bash_profile का उपयोग करता था, लेकिन अब मैं .bashrc को अपनी मुख्य कॉन्फ़िगरेशन फ़ाइल के रूप में उपयोग करता हूं और मेरे .bash_profile में बस होता है . ~/.bashrc। नए खोलों को गैर-लॉगिन शेल के रूप में emacs और tmux में शेल मोड में खोला जाता है। मैं अपने मुख्य कॉन्फ़िगरेशन फ़ाइल के रूप में .profile का उपयोग नहीं करूंगा, क्योंकि इसे ksh जैसे अन्य शेल द्वारा भी पढ़ा जाता है।
Lri

3

आप आम तौर पर $PATHपसंद के बाद अतिरिक्त रास्ते डालते हैं PATH=$PATH:/$HOME/binक्योंकि यदि आप उसी नाम के साथ किसी अन्य निष्पादन योग्य को सुपरसेड नहीं करना चाहते हैं जो कि /binआदि में हो सकता है ।


4
कोई आसानी से यह तर्क दे सकता है कि आप $HOME/binशुरुआत में ठीक उसी कारण से करेंगे। लेकिन महत्वपूर्ण बात यह है कि $PATHमामलों में निर्देशिकाओं का क्रम और शेल पहले मिलान कमांड को चुन लेंगे। इस पर ध्यान दिलाने के लिए धन्यवाद।
nohillside
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.