9

में मौजूद नहीं हो सकता है, मैं अपने PERL5LIB पर्यावरण चर के अंत में एक मार्ग जोड़ने की कोशिश कर रहा हूं, लेकिन मुझे यकीन नहीं है कि यह चर हमेशा मौजूद रहेगा। यदि यह अस्तित्व में नहीं है तो मैं इसे उस मूल्य पर प्रारंभ करना चाहता हूं जिसे मैं जोड़ना चाहता हूं।एक पर्यावरण चर में शामिल करने का सरल तरीका जो अभी तक csh

if ($?PERL5LIB) then 
    setenv PERL5LIB ${PERL5LIB}:/some/other/path 
else 
    setenv PERL5LIB /some/other/path 
endif 

हालांकि यह, काम करता है यह अभी भी बहुत भद्दा लगता है के बाद से मैं मूल रूप से दो बार एक ही पंक्ति लिखने के लिए है:

यहाँ एक उदाहरण है कि काम करता है। मैं क्या करना चाहता हूं एक अधिक कुशल एक लाइन समाधान (संभावित रूप से पैरामीटर विस्तार का उपयोग कर) के साथ आता है।

क्या यह एक लाइन में समेकित करने का कोई तरीका है? (या कुछ लाइनों है कि लिखने "/ कुछ/अन्य/पथ" कई बार शामिल नहीं है)


उदाहरण के लिए इस पार्टी में किया जा सकता है:

export PERL5LIB=${PERL5LIB:+${PERL5LIB}:}/some/other/path 
+0

पीएस। मैं आपके अंतिम संपादन को देखने के लिए संशोधन संपादित कर सकता हूं मेरा जवाब चुरा लिया! –

+0

गायब प्रश्न चिह्न एक टाइपो था। प्रश्न में कोड प्रश्न चिह्न के बिना बिल्कुल काम नहीं करता है, लेकिन मुझे एहसास नहीं हुआ कि मैंने इसे छोड़ दिया जब तक कि मैं अपना उत्तर लिखने के लिए नहीं गया। – tjwrona1992

उत्तर

0

एक की कमी के लिए बेहतर जवाब मैं प्रश्न में जो कुछ था उसके बारे में थोड़ा बेहतर संस्करण पोस्ट करूंगा। बाद कम से कम दो बार पथ लिखने निकाल ...

set perl5lib = "/some/other/path" 
if ($?PERL5LIB) then 
    setenv PERL5LIB ${PERL5LIB}:${perl5lib} 
else 
    setenv PERL5LIB ${perl5lib} 
endif 

हालांकि यह केवल एक बहुत मामूली सुधार है, कम से कम यह कुछ है।

संपादित करें:

तकनीकी तौर पर यह करने के लिए छोटा किया जा सकता है:

set perl5lib = "/some/other/path" 
[ $?PERL5LIB ] && setenv PERL5LIB ${PERL5LIB}:${perl5lib} || setenv PERL5LIB ${perl5lib} 

सबसे पठनीय नहीं है, लेकिन मुझे लगता है कि इस बारे में के रूप में अच्छा है के रूप में मैं प्राप्त करने के लिए जा रहा हूँ।

संपादित करें 2:

संभवतः अधिक पठनीय? ... मुझे वास्तव में पता नहीं है।

set perl5lib = "/some/other/path" 
[ $?PERL5LIB ] \ 
    && setenv PERL5LIB ${PERL5LIB}:${perl5lib} \ 
    || setenv PERL5LIB ${perl5lib} 
+0

मैं इसे बेहतर की कमी के उत्तर के रूप में स्वीकार कर रहा हूं ... यदि आपके पास बेहतर उत्तर है तो कृपया इसे पोस्ट करने में संकोच न करें और मैं स्वीकृत उत्तर बदल दूंगा। – tjwrona1992

+0

आपको पता है कि घुंघराले ब्रैकेट का उपयोग अनावश्यक है और जटिलता को जोड़ता है, '{'= इनलाइन विस्तार और'}' = अंत में विस्तार का विस्तार करें क्योंकि आप कोई अभिव्यक्ति नहीं कर रहे हैं, आपको उनका उपयोग नहीं करना चाहिए और प्रदर्शन बर्बाद कर रहे हैं मुझे लगता है कि आप कंप्यूटर में जटिलता और आकार के बीच अंतर नहीं जानते हैं। –

+0

@MartinBarker यह वास्तविक जटिलता और प्रदर्शन की तुलना में कोड डुप्लिकेशन के बारे में अधिक है। मैं सिर्फ "/ कुछ/अन्य/पथ" को एक से अधिक बार लिखना नहीं चाहता क्योंकि जब आप कई पर्यावरण चर के लिए ऐसा करते हैं तो एक टाइपो होने का मौका और इसके बारे में नहीं जानना बहुत अधिक हो जाता है। – tjwrona1992

संबंधित मुद्दे