В El Capitan 10.11.5 версия Bash:

GNU bash, version 3.2.57(1)-release (x86_64-apple-darwin15)
Copyright (C) 2007 Free Software Foundation, Inc.

Как я могу использовать / установить Bash 4.3 для использования функций, подобных перечисленным ниже?

Как получить цветную вкладку завершения?

2 ответа2

3

Примечание: это действительно не сложный процесс. Просто слов много. Это может занять около 2 минут или меньше, в зависимости от вашей системы. Вы можете почти скопировать / вставить эти команды в последовательности. Просто меняйте все, что есть во всех CAPS, обычно.

Я только что сделал это на днях для macOS 10.12.x. Я пошел с v4.3.30, так как похоже, что v4.4 все еще тестируется или только недавно закончил.

Загрузите его (в данном случае v4.3.30) из источника: http://ftp.gnu.org/gnu/bash/bash-4.3.tar.gz

После того, как вы загрузили bash, вы можете в значительной степени запускать эти команды в последовательном порядке, если у вас все в порядке с установкой в ~/Bin (это мое предложение; вы всегда можете переместить его позже). В противном случае я укажу, где вы можете изменить это. Все с префиксом «#» является комментарием, поэтому не вводите его в командной строке!

    # Unpack the archive.
    tar zxvf ~/Downloads/bash-4.3.tar.gz 
    # Change into the directory (of the unpacked archive).
    cd ~/Downloads/bash-4.3/
    # Create a directory to store some of your user programs.
    mkdir ~/Bin
    # Run configure which will gather info. about the installation 
    #+ environment. Optionally, you can include the --prefix option along
    #+ with an argument for the install location. If you'd like to install  
    #+ elsewhere, use --prefix and the location of your choosing.
    ./configure --prefix ~/Bin
    # Compile the source code.
    make
    # Install the compiled program. 
    # Note: You can do without sudo since you're installing locally.
    sudo make install

Вот и все. Bash теперь установлен. Тем не мение... Есть несколько вещей, которые вы должны знать:

Теперь в вашей системе установлены две разные версии bash. Это прекрасно. Это даже желательно для тестирования и обратной совместимости. Это то, что я делаю, и я планирую продолжить. Это похоже на использование оболочки с другим именем в вашей системе, например, zsh, sh, csh и т.д.

Следует помнить, что когда вы запускаете приложение Terminal и открываете новую оболочку, ваша оболочка по умолчанию по-прежнему будет старой версией bash, если вы ее не измените (подробнее об этом ниже). Чтобы запустить новый bash, вы не можете просто ввести команду bash потому что тогда bash будет смотреть на вашу переменную PATH, идти вниз по списку и пытаться найти bash, и он, скорее всего, найдет /bin /bash прежде чем он найдет ваш новый bash, тем более что новый bash может быть (если вы следовали моему совету) в папке ~ /Bin, которая пока даже не является частью вашего PATH.

Итак, на этом этапе, если вы хотите запустить bash-4.3.30 из командной строки, введите полный путь, заменив USERNAME на имя вашего домашнего каталога: /Users/USERNAME/Bin/bash/bin/bash And Вы можете сделать bash --version и сказать: «Привет, ВТФ! Почему я до сих пор работаю со старым bash?"И это потому, что вы вызвали старый удар! Еще раз, ввод команды bash скорее всего будет разрешен в /bin /bash. Итак, как мы можем это исправить? Или, по крайней мере, как мы можем увидеть, что на самом деле мы запускаем bash-4.3.30?

Если вы хотите узнать, какую оболочку вы используете из командной строки, выполните: echo $0

$ 0 - это специальный параметр для bash, в котором хранится имя исполняемого процесса, которое в данном случае - bash-4.3.30 (тот, кто выполняет ваши ставки от вашего имени, обычно для вас выполняет другие программы). Теперь, чтобы увидеть версию, введите полный путь к соответствующей программе, которую вы хотите интерпретировать этим аргументом, - это новый bash-4.3.30, и он равен значению $ 0, которое вы только что вернули из echo. Итак, выполните: /Users/USERNAME/Bin/bash/bin/bash --version чтобы увидеть разницу. Это может показаться странным, но вы сейчас запускаете bash-4.3.30, но вы запускаете его как дочерний процесс в /bin /bash (старый bash). Теперь введите exit и вы выйдете из bash4.3.30 и вернетесь к старому bash. exit снова, и вы, скорее всего, закроете окно терминала и выйдите из сеанса оболочки.

Теперь у вас есть несколько различных вариантов использования bash-4.3.30 без необходимости вводить полный путь каждый раз, когда вы хотите его запустить.

Если вы хотите запустить bash-4.3.30 по умолчанию, вы можете изменить свою оболочку входа в систему по умолчанию в Terminal.app: Настройки ...> Общие> Оболочки, открытые с помощью> ...Измените это на Default Login Shell и введите новый полный путь bash-4.3.30, изменив USERNAME на имя вашего домашнего каталога: /Users/USERNAME/Bin/bash/bin/bash

Если вы по-прежнему предпочитаете запускать старый bash при входе в систему, но просто упростите запуск нового bash без необходимости запоминать путь, вы можете просто создать псевдоним и добавить его в ~/.bashrc: echo 'alias bash4="/Users/USERNAME/Bin/bash/bin/bash"' >> ~/.bashrc Таким образом, вы можете вызвать bash-4.3.30, просто набрав bash4 из командной строки.

В качестве альтернативы, вы можете добавить местоположение нового bash в переменную PATH. Если вы добавляете префикс, а не добавляете, вы должны получить bash-4.3.30 при вызове bash из командной строки:

    # Prefix ~/Bin/bash/bin/ to your PATH variable:
    PATH="~/Bin/bash/bin:${PATH}"
    # Save it by changing it in your ~/.bashrc
    echo 'export PATH="$PATH"' >> ~/.bashrc

Просто не забудьте сделать echo $0 если вы не уверены, какой bash вы используете. Я бы не рекомендовал переименовывать новый или старый bash. Это может потенциально привести к нежелательным последствиям. Тем не менее, я сделал это на моей системе в качестве теста (для этого требуется sudo). Вот как ты учишься! И теперь у вас всегда есть возможность использовать старый bash, и вы знаете, как создавать новый bash из исходного кода заново, если это необходимо.

1

Вы можете использовать менеджер пакетов (Homebrew, MacPorts, Fink, Nix, Rudix и т.д.) Для установки двоичного файла Bash, или вы можете скомпилировать из исходного кода, если вы не используете менеджер пакетов и предпочитаете не устанавливать его.

Homebrew, MacPorts и Nix имеют пакеты Bash> = Bash v4.3. Я не уверен насчет других менеджеров пакетов. Если вы не хотите устанавливать через менеджер пакетов, вы можете скачать исходный код Bash 4.3, а затем скомпилировать его. Если вы не знаете, как это сделать, пожалуйста, не стесняйтесь обращаться ко мне за помощью. Я с радостью пройдусь через этот процесс вместе с вами. (Изменить: ответ GH05T подробно, как скомпилировать из источника)

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .