Как создать символические ссылки в /usr/bin на Mac?

Среда: OSX Sierra, ядро ​​Darwin версии 16.3.0

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

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

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

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

sudo su

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

Вопросы:

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

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

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

1 ответ

Решение

Вы получаете это сообщение из-за защиты целостности системы 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....
Другие вопросы по тегам