Ambiente: OSX Sierra, Darwin Kernel versão 16.3.0
Problema raiz: quero usar um monte de scripts de shell em um repositório central, que possui um #! / Usr / bin / zsh. No meu Mac, o zsh está em / bin / zsh.
Tentativa de solução: quero criar um link simbólico
ln -s /bin/zsh /usr/bin/zsh
Minha conta de usuário possui direitos de administrador, mas não sou root e prefiro não habilitar o usuário root neste Mac. Portanto, eu fiz primeiro
sudo su
para obter um shell com privilégios de root e, em seguida, executou o comando ln . No entanto, ainda recebo a mensagem de erro ln: / usr / bin / zsh: Operação não permitida .
Questões:
Por que recebo essa mensagem de erro?
O que eu devo fazer para criar o link?
Existe uma maneira melhor de alcançar meu objetivo original? Observe que a fixação do #! linhas não é uma opção.
/usr/bin/zsh
para/bin/zsh
?Respostas:
Você recebe esta mensagem por causa da Proteção da integridade do sistema da Apple . A Proteção de Integridade do Sistema inclui proteção para essas partes do sistema:
Caminhos e aplicativos que aplicativos e instaladores de terceiros podem continuar escrevendo para incluir:
Isso significa que você pode simplesmente criar um link simbólico no
/usr/local/bin
(ainda está no seu $ PATH).MAS, parece que você precisa especificamente criar o link simbólico
/usr/bin
. Você pode conseguir isso desativando a Proteção de integridade do sistema (por favor, não faça isso, basta editar os scripts ..). Você pode desativá-lo (eu mesmo não testei !!!):fonte
#!/usr/bin/zh
como shell, então a solução que ele procura é vincular esse local ao local onde o shell realmente reside, mas como você diz, ele está protegido contra isso. A menos que a proteção seja ignorada, a única solução parece ser uma edição em lote dos scripts.