Невозможно обновить мой Bash в Mac от MacPorts - PullRequest
37 голосов
/ 26 апреля 2009

Я неудачно обновил мой Bash до 3.2.48 от MacPorts.

Похоже, у меня нет его активного, так как я получаю

echo $BASH_VERSION
3.2.17(1)-release

Как сделать активным новейший Bash , чтобы я мог получить его для своей оболочки входа в систему?

Ответы [ 3 ]

74 голосов
/ 26 апреля 2009

Запустите следующий код, например, чтобы изменить оболочку на новейшую версию Bash, установленную MacPorts

chsh -s /opt/local/bin/bash

Если это дает вам сообщение,

"non-standard shell"

вам нужно будет добавить

/opt/local/bin/bash

до

/etc/shells

Обратите внимание, что /etc/shells - это просто текстовый файл, поэтому вы можете редактировать его напрямую, если вы аутентифицируетесь как root. Вы можете программно изменить его командой

sudo -s
Password:
# echo /opt/local/bin/bash >> /etc/shells

Если ваша первая команда chsh не удалась, запустите ее сейчас снова, если вам удалось изменить вышеуказанный файл.

2 голосов
/ 16 марта 2013

Вы можете переключить свою оболочку входа из существующей оболочки входа Mac OS X (по умолчанию ее /bin/bash поставляется с Mac OS X) на MacPorts /opt/local/bin/bash, просто используя следующий скрипт оболочки:

#!/opt/local/bin/bash
if [ `grep /opt/local/bin/bash /etc/shells` ]; 
then 
    echo /opt/local/bin/bash | chsh -s /opt/local/bin/bash;     
else 
    echo /opt/local/bin/bash | sudo tee -a /etc/shells; 
    chsh -s /opt/local/bin/bash; 
fi
2 голосов
/ 27 апреля 2009

Я предполагаю, что он установлен, но не используется в качестве оболочки для входа.

Вы можете изменить оболочку, используя dscl в командной строке.

В командной строке dscl введите следующее:

list Local/Default/Users
read Local/Default/Users/<your username here>
change Local/Default/Users/<your username here> UserShell /bin/bash /opt/local/bin/bash

У меня есть другой пример использования dscl в моем блоге , если это поможет.

...