पर्यावरण PATH में ~ / प्रोजेक्ट्स / * / बिन निर्देशिका जोड़ें (Ubuntu 16.04)


1

सब कुछ शीर्षक में है। मुझे पता है कि पर्यावरण में नए रास्ते कैसे जोड़े जाते हैं PATH चर लेकिन मैं इसे स्वचालित रूप से जोड़कर पुनरावर्ती बनाना चाहूंगा /bin मेरे सभी भविष्य की परियोजनाओं के फ़ोल्डर।

कुछ इस तरह, इसकी जगह:

PATH=$PATH:~/projects/project1/bin
PATH=$PATH:~/projects/project2/bin
..
PATH=$PATH:~/projects/projectN/bin

इसके द्वारा:

PATH=$PATH:~/projects/*/bin

समस्या: हर बार मैं डाल दिया * इसमें, यह सिस्टम द्वारा मान्यता प्राप्त नहीं है। क्या आपको ऐसा करने का कोई तरीका दिखाई देता है?

मैं Ubuntu 16.04 पर काम कर रहा हूँ

जवाबों:


0

इस तरह से कुछ हासिल करने के लिए आपको सबसे अधिक गोले में एक कोड को कुछ कोड में डालना होगा। बैश में इसका अंकन है $(...some command...)

पहुंच

$ find ~ -iregex ".*project.*/bin" | xargs | sed 's/ /:/g'

यह एक लाइनर निर्देशिका की एक सूची का उत्पादन करेगा जिसमें एक सूची होती है /bin उनके भीतर उप-निर्देशिका। यह 100% सही नहीं है, क्योंकि यह उन निर्देशिकाओं को संभाल नहीं सकता है जिनमें उनके नाम के स्थान हैं, लेकिन अगर आपको पता है कि आपकी स्थिति इस नियम के अनुरूप है तो आप इसका उपयोग कर सकते हैं।

उपरोक्त स्निपेट का उपयोग करके आप अपना निर्माण करेंगे $PATH इस तरह:

PATH=$PATH:$(find ~ -iregex ".*project.*/bin" | xargs | sed 's/ /:/g')

उदाहरण

इस उदाहरण के लिए मैं उपयोग करने जा रहा हूं $MYPATH एक स्टैंड-इन के रूप में $PATH। शुरू करने के लिए हमारे पास कुछ निर्देशिकाएँ पहले से ही निहित हैं $MYPATH

$ MYPATH=/path1/bin:/path2/bin
$ echo $MYPATH
/path1/bin:/path2/bin

अब सभी को जोड़ने के लिए ~/project*/bin निर्देशिका करने के लिए $MYPATH:

$ MYPATH=$MYPATH:$(find ~ -iregex ".*project.*/bin" | xargs | sed 's/ /:/g')
$ echo $MYPATH
/path1/bin:/path2/bin:/Users/slm/project1/bin:/Users/slm/project2/bin:/Users/slm/project3/bin
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.