Среда: 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: Операция не разрешена .
Вопросов:
Почему я получаю это сообщение об ошибке?
Что мне нужно сделать, чтобы создать ссылку?
Есть ли лучший способ достичь моей первоначальной цели? Обратите внимание, что исправление #! линии не вариант.
/usr/bin/zsh
в/bin/zsh
?Ответы:
Вы получаете это сообщение из-за защиты целостности системы Apple . Защита целостности системы включает защиту следующих частей системы:
Пути и приложения, которые сторонние приложения и установщики могут продолжать писать, включают:
Это означает, что вы можете просто создать символическую ссылку в
/usr/local/bin
(она все еще находится в вашем $ PATH).НО, похоже, вам специально нужно создать символическую ссылку в
/usr/bin
. Вы можете добиться этого, отключив защиту целостности системы (не делайте этого, просто отредактируйте сценарии ..). Вы можете отключить его (я сам не проверял !!!):источник
#!/usr/bin/zh
в качестве оболочки, поэтому он ищет решение связать это место с тем местом, где на самом деле находится оболочка, но, как вы говорите, он защищен от этого. Если защита не будет обойдена, единственным решением может быть пакетное редактирование сценариев.