Как обновить 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 меняется на старую, когда я пытаюсь выполнить скрипт в той же оболочке??? Это просто выводит меня из себя! Пожалуйста кто-нибудь объясните мне в чем моя проблема)))

24
задан JakeGould
12.12.2022 12:32 Количество просмотров материала 3676
Распечатать страницу

3 ответа

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

#!/bin/bash

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

#!/usr/local/bin/bash

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

17
отвечен BenjiWiebe 2022-12-13 20:20

установить новый 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 2022-12-13 22:37

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

#!/usr/bin/env bash

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

#!/usr/local/bin/bash

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

5
отвечен Agoston Horvath 2022-12-14 00:54

Постоянная ссылка на данную страницу: [ Скопировать ссылку | Сгенерировать QR-код ]

Ваш ответ

Опубликуйте как Гость или авторизуйтесь

Имя
Вверх