Подтвердить что ты не робот

Не удалось обновить мой Bash на Mac MacPorts

Я безуспешно обновил свои версии Bash до 3.2.48 с помощью MacPorts.

Кажется, что у меня нет активной, так как я получаю

echo $BASH_VERSION
3.2.17(1)-release

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

4b9b3361

Ответ 1

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

chsh -s /opt/local/bin/bash

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

"non-standard shell"

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

/opt/local/bin/bash

to

/etc/shells

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

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

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

Ответ 2

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

Вы можете изменить оболочку с помощью 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 на моем blog, если это помогает.

Ответ 3

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

#!/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