8

Окружающая среда: OSX Sierra, ядро Darwin версии 16.3.0

Корневая проблема: я хочу использовать кучу сценариев оболочки в центральном хранилище, которые имеют #!/ USR / бен / ЗШ. На моем Mac zsh находится в / bin / zsh.

Попытка решения: хочу создать символическую ссылку

ln -s /bin/zsh /usr/bin/zsh

Моя учетная запись имеет права администратора, но я не являюсь пользователем root, и я бы предпочел не включать пользователя root на этом Mac. Поэтому я сначала сделал

sudo su

чтобы получить оболочку с привилегиями root и затем выполнить команду ln. Однако я все еще получаю сообщение об ошибке ln: /usr /bin /zsh: Операция не разрешена.

Вопросы:

  • Почему я получаю это сообщение об ошибке?

  • Что мне нужно сделать, чтобы создать ссылку?

  • Есть ли лучший способ достичь моей первоначальной цели? Обратите внимание, что исправление #! линии не вариант.

1 ответ1

12

Вы получаете это сообщение из-за защиты целостности системы Apple. Защита целостности системы включает защиту для следующих частей системы:

/System
/usr
/bin
/sbin
Apps that are pre-installed with OS X

Пути и приложения, которые сторонние приложения и установщики могут продолжать писать, включают:

/Applications
/Library
/usr/local

Это означает, что вы можете просто создать символическую ссылку в /usr/local/bin (она все еще находится в вашем $ PATH).

НО, похоже, вам специально нужно создать символическую ссылку в /usr/bin . Вы можете добиться этого, отключив защиту целостности системы (не делайте этого, просто отредактируйте сценарии ..). Вы можете отключить его (я сам не проверял !!!):

Click the  menu.
Select Restart...
Hold down command-R to boot into the Recovery System.
Click the Utilities menu and select Terminal.
Type csrutil disable and press return.
Close the Terminal app.
Click the  menu and select Restart....

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