Вопрос или проблема
как удалить “старый” bash с Mac OS? Я установил homebrew, установил bash 5.2 и настроил его как основной. Я отключил SIP и выполнил две команды, на которые получил следующие ответы:
sudo rm /bin/bash
- перезаписать r-xr-xr-x root/wheel ограничено, сжато для /bin/bash? y
- rm: /bin/bash: Файловая система только для чтения
sudo ln -s /usr/local/bin/bash bin/bash
- ln: /bin/bash: Файл существует
Согласно инструкциям, которые я следую, это должно сработать. Я пытаюсь удалить установленный Apple по умолчанию bash 3.2 и перенаправить его на недавно установленный /usr/local/bin/bash, но даже с отключенным SIP я все равно получаю блокировку.
Вы не можете удалить версию bash
для macOS, так как она является (в текущих версиях ОС) частью защищенного системного тома, доступного только для чтения.
Что, возможно, еще важнее, в этом нет необходимости. Установите homebrew, а затем установите bash
. В таком случае установка осуществляется либо в /usr/local
для архитектуры Intel, либо в /opt/homebrew
для Apple Silicon.
После установки ваша переменная PATH будет настроена так, чтобы сначала искать в соответствующем каталоге. Таким образом, современная версия bash
может быть найдена раньше, чем древний стандарт от Apple.
Документация по homebrew
находится здесь.
Вы можете установить новую версию bash через homebrew и использовать
#!/usr/bin/env bash
вместо #!/bin/bash
, что, видимо, все равно лучше.
Ответ или решение
Удаление старой версии Bash (3.2) из macOS невозможно, поскольку она является частью защищенного системного тома, который является только для чтения в современных версиях операционной системы. Тем не менее, можно установить новую версию Bash и настроить систему так, чтобы использовать ее по умолчанию. Вот подробные шаги по этому процессу:
-
Установка Homebrew:
Если у вас еще не установлен Homebrew, выполните следующую команду в терминале:/bin/bash -c "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/HEAD/install.sh)"
-
Установка новой версии Bash:
После установки Homebrew выполните команду:brew install bash
Это установит последнюю версию Bash в директорию
/usr/local/bin/bash
для систем Intel или в/opt/homebrew/bin/bash
для Apple Silicon. -
Добавление в список разрешенных оболочек:
Чтобы ваша новая версия Bash могла использоваться как оболочка по умолчанию, вам необходимо добавить ее в список разрешенных оболочек. Для этого выполните следующую команду:sudo bash -c 'echo /usr/local/bin/bash >> /etc/shells'
Убедитесь, что вы заменили
/usr/local/bin/bash
на путь к новой версии Bash, если вы используете Apple Silicon. -
Смена оболочки по умолчанию:
Чтобы изменить оболочку на новую версию Bash, выполните команду:chsh -s /usr/local/bin/bash
Опять же, замените путь, если необходимо.
-
Использование новой оболочки:
Перезапустите терминал или выполнитеexec bash
для применения изменений. Теперь вы должны использовать более новую версию Bash. -
Используйте Shebang:
В скриптах вы можете использовать#!/usr/bin/env bash
вместо#!/bin/bash
. Это более гибкий подход, который ищет Bash в пользовательском окружении и обеспечивает использование установленной версии.
В заключение, удалить старую версию Bash не требуется. Новая версия будет использована с изменением переменной окружения PATH, и вы сможете использовать все преимущества более новых функций Bash. С этими шагами вы сможете настроить свою систему для работы с последней версией Bash без необходимости удалять предустановленную системную версию.