Как обновить bash на Mac OS X Yosemite

просто пытаюсь немного научиться скриптингу bash. Моя старая версия bash:

Bash version 3.2.53(1)-release...

я обновил свой bash на mac os x yosemite с homebrew:

brew update
brew install bash

затем в свойствах терминала я изменил стандартный путь снаряда от /bin/bash to /usr/local/bin/bash (как я понимаю, именно здесь доморощенный устанавливает обновленный bash).

потом я снова проверил результат (и вроде бы все хорошо):

$ echo $BASH_VERSION
Bash version 4.0.33(0)-release...

но когда я пытался написать простой bash-скрипт:

#!/bin/bash
echo "Bash version ${BASH_VERSION}..."
for i in {0..10..2}
  do
     echo "Welcome $i times"
 done

РЕЗУЛЬТАТ:

Bash version 3.2.53(1)-release...
Welcome {0..10..2} times

ВМЕСТО:

Bash version 4.0.33(0)-release...
Welcome 0 times
Welcome 2 times
Welcome 4 times
Welcome 6 times
Welcome 8 times
Welcome 10 times

почему версия Bash меняется на старую, когда я пытаюсь выполнить скрипт в той же оболочке??? Это просто выводит меня из себя! Пожалуйста кто-нибудь объясните мне в чем моя проблема)))

25
задан JakeGould 2014-12-27 04:27:04
источник

3 ответов

ваша проблема находится в первой строке. У вас есть это:

#!/bin/bash

, в котором явно указано, что сценарий оболочки должен запускаться со старым /bin/bash. Что ты действительно хочу, это:

#!/usr/local/bin/bash

использовать новый bash С /usr/local/bin.

17
отвечен BenjiWiebe 2014-12-27 08:15:21
источник

установить новый bash:

brew install bash

сделать это оболочкой по умолчанию:

chsh -s /usr/local/bin/bash

установка окружения в скрипте:

#!/usr/bin/env bash

используя env будет искать Баш в своем $PATH и использовать первый встречный. Вы можете увидеть, какой bash он будет использовать путем ввода which bash. Если он видит /bin/bash во-первых, вам нужно будет установить $PATH in ~/.bashrc и /.bash_profile.

13
отвечен Ben 2016-04-01 01:08:58
источник

Как указал pjv, вы действительно должны использовать

#!/usr/bin/env bash

в ваших скриптах везде будет переносимо. Е. Г. если вы пытаетесь запустить свой скрипт

#!/usr/local/bin/bash

он потерпит неудачу на большинстве систем linux.

5
отвечен Agoston Horvath 2015-11-16 14:39:50
источник

Другие вопросы shell macos bash shell-script bash-scripting

X