Criar um link simbólico em / bin não está funcionando


8

Eu tentei três maneiras diferentes de criar um link simbólico para o Sublime Text no meu Mac e, depois de reiniciar o terminal a cada vez, ele ainda continua me dizendo que o comando não foi encontrado. Estou usando um Mac com Yosemite (OSX Yosemite, 10.10). Como posso criar um link simbólico para que eu possa abrir o Sublime com o sub comando?

1

ln -s 'Applications/Sublime\ Text.app/Contents/SharedSupport/bin/subl' /bin/sub

Dois

ln -s "Applications/Sublime\ Text.app/Contents/SharedSupport/bin/subl" /bin/sub

Três (sem aspas)

ln -s Applications/Sublime\ Text.app/Contents/SharedSupport/bin/subl /bin/sub

o link realmente cria algo em / bin chamado sub? tente sudo?
chris

1
Se você usa aspas, você não quer a barra invertida. Se você não usar aspas, a barra invertida é necessária. Você também precisa da barra principal /Applications/…, como apontado na resposta, e você precisa de privilégios de root para escrever /bin (conseqüentemente sudo ). A questão residual é se é suficiente para executar o executável assim. Tem certeza de que não quer um script de shell que faça algo como open "/Applications/Sublime\ Text.app" em vez disso, como o conteúdo do arquivo em /bin?
Jonathan Leffler

Respostas:


15

Você está sentindo falta do '/' no início do seu aplicativo e sudo Como /bin É de propriedade de root e você não pode realmente escrever para ele como um usuário normal. Como você tem atualmente, isso só funcionaria se o seu diretório atual fosse a raiz do sistema. Isso pressupõe, claro, que o aplicativo Sublime Text esteja na sua pasta principal de Aplicativos.

Tente isso ...

sudo ln -s /Applications/Sublime\ Text.app/Contents/SharedSupport/bin/subl /bin/sub

Uma reflexão tardia: considera-se má prática mudar o conteúdo de /bin e /usr/bin porque qualquer atualização futura do OS X pode limpar o conteúdo lá. /usr/local/bin é o local habitual para instalar binários fornecidos pelo usuário,

[[ -d /usr/local/bin ]] || sudo mkdir /usr/local/bin
sudo ln -s /Applications/Sublime\ Text.app/Contents/SharedSupport/bin/subl /usr/local/bin/sub

pode ser a melhor opção.

Ou (como você provavelmente nunca precisará executar o Sublime Text a partir de um script shell), simplesmente defina um alias bash

alias sub=/Applications/Sublime\ Text.app/Contents/SharedSupport/bin/subl

que deve ser adicionado ao seu arquivo de inicialização bash para torná-lo

echo "alias sub=/Applications/Sublime\ Text.app/Contents/SharedSupport/bin/subl" >> ~/.bashrc

3
Você precisa usar sudo e se você vai citar o nome do caminho, então não use barras invertidas para escapar de espaços!
user3439894

0

Tarde para a festa. Eu encontrei o mesmo problema ao configurar meu Mac e tentei algumas coisas. Aqui está o que funcionou para mim.

ln -sv "/Applications/Sublime Text.app/Contents/SharedSupport/bin/subl" /usr/local/bin/subl

Para mais informações, vá para este repo do github .


Além do fato de que seu comando falhará, já que você não usou sudo e é necessário, neste caso, como isso é diferente do que já foi oferecido na resposta do mockman? Outro então aquele fato que ele escolhe usar sub vs. subl, para digitar um caractere a menos repetidamente para usá-lo, não é realmente do que eu posso ver!
user3439894

@ user3439894 sudo não é um requisito. E o comando acima usa /usr/local/bin não /usr/bin como os comandos acima. /usr/local/bin é o diretório recomendado para aplicativos do usuário, enquanto / usr / bin é usado para programas do usuário gerenciados por distribuição. Assim, sub vs subl é não a única mudança, simplesmente depende da preferência do usuário; o que eles querem escrever. Peço desculpas se causar confusão.
L.T

1. Executando seu comando como de uma conta admin, retorna ln: /usr/local/bin/subl: Permission denied 2. Eu sugiro que você releia a resposta do mockman como ele tem absolutamente /usr/local/bin/ no segundo sudo ln -s comando em sua resposta!
user3439894
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.