होमब्रेव का उपयोग करके योसेमाइट में बाश को अपग्रेड करने के साथ अजीब मुद्दा


4

मैं OS X Yosemite चला रहा हूं। मुझे बैश में साहचर्य सरणियों का उपयोग करने की आवश्यकता है इसलिए मैंने बैश को 4.x पर अपग्रेड करने के लिए होमब्रे का उपयोग करने का निर्णय लिया। मैंने निम्नलिखित चरण किए:

  1. brew install bash
  2. मैं तो जोड़ा /usr/local/bin/bashकरने के लिए /etc/shellsऔर अच्छा उपाय रिबूट।
  3. chsh -s /usr/local/bin/bash
  4. अच्छे उपाय के लिए, मैंने लॉग आउट किया और वापस लॉग इन किया, हालांकि एक साधारण टर्मिनल पुनरारंभ संभवत: पर्याप्त होगा।

जब मैं टर्मिनल खोलता हूं, तो चीजें ठीक लगती हैं। अगर मैं कहूं तो $SHELL --versionमुझे मिल जाएगा GNU bash, version 4.3.30(1)-release (x86_64-apple-darwin14.0.0)। दुर्भाग्य से, अगर मैं कहता echo $BASH_VERSIONहूं कि मुझे मिलता है 3.2.53(1)-release। इसके अलावा, मैं बैश 4.x की किसी भी उन्नत सुविधा का उपयोग नहीं कर सकता, जैसे कि सहयोगी सरणियाँ, जैसे, declare -A fooकहते हैं -bash: declare: -A: invalid option

दिलचस्प है, echo $0कहते हैं -bash

यहाँ क्या चल रहा है? मैं अपने सहयोगी सरणियाँ कैसे प्राप्त करूं?


क्या कहता है कौन सा बैश ?
मिरको एबर्ट


@ tfb785 which bashदेता है /usr/local/bin/bash
ग्रेगरी हिगले

@ tfb785 इसके अलावा, /etc/pathsहै /usr/local/binसे पहले /usr/bin, ताकि मुद्दा हो प्रतीत नहीं होता है।
ग्रेगरी हिगले

जवाबों:


4

मेरे पास एक समान मुद्दा था, और यह मेरे #!पथ के साथ निकला । यह सुनिश्चित करने के लिए जाँच करें कि आप इसे इंगित नहीं कर रहे हैं:

#!/bin/bash

लेकिन पर:

#!/usr/local/bin/bash

यदि आप #!/bin/bashशीर्ष पर उपयोग करना जारी रखना चाहते हैं , तो आप इसके बजाय चाहते हो सकते हैं:

sudo ln -s /usr/local/bin/bash /bin/bash

अद्यतन करें:

यदि आपके $PATHपास /url/local/binपहले है /binऔर /usr/binआप बस कर सकते हैं:

#!/usr/bin/env bash

एक समाधान के लिए जो OS X / Homebrew सेटअप के लिए कम विशिष्ट है।

हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.