मैं अपेक्षाकृत विषम वातावरण में काम करता हूं जहां मैं अलग-अलग एचपीसी नोड्स, वीएम या मेरे व्यक्तिगत वर्कस्टेशन पर बैश के विभिन्न संस्करणों को चला सकता हूं। क्योंकि मैंने अपनी लॉगिन स्क्रिप्ट्स को एक Git repo में डाल दिया है, मैं .bashrc
पूरे बोर्ड में एक ही (ish) का उपयोग करना चाहूंगा , बिना "अगर यह होस्ट, तो ..." - बहुत गड़बड़ है।
मुझे बैश I 4.1 का डिफ़ॉल्ट व्यवहार पसंद है जो कुंजी दबाने cd $SOMEPATH
पर फैलता है । 4.2 और इसके बाद के संस्करण में, आपको इस व्यवहार को फिर से सक्षम करना होगा, और यह 4.2.29 तक उपलब्ध नहीं होगा । यह सिर्फ एक उदाहरण है, हालांकि; एक और, संभवतः संबंधित विकल्प, (हालांकि मुझे नहीं पता कि यह वास्तव में क्या करता है) ने भी v4.2 में डिफ़ॉल्ट व्यवहार को बदल दिया है।cd /the/actual/path
Tabshopt -s direxpand
shopt
complete_fullquote
हालाँकि, direxpand
बैश के पुराने संस्करणों द्वारा मान्यता प्राप्त नहीं है, और अगर मैं shopt -s direxpand
अपने में कोशिश करता हूं .bashrc
, तो हर बार जब मैं एक पुराने बैश के साथ नोड में लॉग इन करता हूं, तो कंसोल में मुद्रित होने वाले त्रुटि संदेश में परिणाम होता है:
-bash: shopt: direxpand: invalid shell option name
मैं जो करना चाहता हूं, वह सशर्त shop -s direxpand
तरीके से Bash> 4.1 पर उस विकल्प को सक्षम करने के लिए चारों ओर एक सशर्त लपेट है , बिना Bash के पुराने संस्करणों ( यानी , केवल त्रुटि आउटपुट को पुनर्निर्देशित नहीं करके /dev/null
)।
.bashrc
। मैं अभी भी $BASH_VERSINFO
अपने स्वयं के संपादन के लिए चल रहे शेल के प्रमुख / लघु संस्करण का उपयोग करने के तरीके का एक रिकॉर्ड चाहता था , यही कारण है कि मैंने अपना उत्तर पोस्ट करना समाप्त कर दिया। :)