इस तरह से कुछ हासिल करने के लिए आपको सबसे अधिक गोले में एक कोड को कुछ कोड में डालना होगा। बैश में इसका अंकन है $(...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