Como criar links simbólicos no / usr / bin no Mac?


11

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.


Por que você não copia apenas /usr/bin/zshpara /bin/zsh?
— Lenniey

11
@Lenniey Dessa forma, você cria uma cópia solta que não será atualizada junto com o original.
— Mario

Mario whelp ... é claro que você está certo. OP: nunca faça isso! ;)
— Lenniey 18/01/19

11
@Lenniey - A cópia precisa ir para o outro lado! E se você pode copiar, pode vincular.
— AFH

@AFH sim o meu comentário é uma completa bagunça ...
— Lenniey

Respostas:


15

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:

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

Caminhos e aplicativos que aplicativos e instaladores de terceiros podem continuar escrevendo para incluir:

/Applications
/Library
/usr/local

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 !!!):

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....

2
Você não entendeu: o questionador possui scripts que especificam #!/usr/bin/zhcomo 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.
— AFH

Bem, sim, você está correto, ele tem que editar os scripts (o que pode acontecer com um único comando).
— 13dimitar

@Dimitar veja a pergunta: Existe uma maneira melhor de alcançar meu objetivo original? Observe que a fixação do #! linhas não é uma opção.
— Lenniey

11
tomado nota, eu modifiquei a minha resposta
— 13dimitar
Ao utilizar nosso site, você reconhece que leu e compreendeu nossa Política de Cookies e nossa Política de Privacidade.
Licensed under cc by-sa 3.0 with attribution required.