qual é a maneira correta de aliasar um binário em / usr / local / bin?

1

Se eu quiser aliasar um arquivo executável em /usr/local/bin , existe uma maneira correta de criar tal alias? e como posso fazer um? Softlink Hardlink? Outra coisa?
Por exemplo, quando eu

apt-get install vim;

Aptitude alias /usr/local/bin/vi as /usr/local/bin/vim (se bem me lembro)

    
por hanshenrik 04.01.2016 / 23:22

2 respostas

4

Tecnicamente falando, existe uma maneira de "alias" aplicativos padrão. O que você está encontrando com sudo apt-get install vim é Sistema de Alternativas Debian .

Basicamente, esse sistema tem uma lista de aplicativos padrão na pasta /etc/alternatives/ , que são links simbólicos para qualquer aplicativo padrão que você tenha. Antes de instalar o vim você tem vim.tiny , então vi é vinculado a /etc/alternatives/vi , que então é vinculado a /usr/bin/vim.tiny . Assim que você obtiver o% real vim , todos esses links simbólicos serão atualizados para, no final, apontar para vim .

Claro que existe um caminho manual através de sudo update-alternatives --config vi . E claro, não há nada que impeça você de criar seus próprios links simbólicos. No entanto, para programas que não terão muitas implementações diferentes, como screen , por exemplo, você pode simplesmente deixá-los em paz. Desde que /usr/bin esteja na sua variável $PATH (que sempre deve ser), você pode simplesmente digitar myappname e ele será executado.

    
por Sergiy Kolodyazhnyy 05.01.2016 / 00:36
2

Não importa o que você faça, não faça link físico .

Os links rígidos levam a problemas confusos quando, por exemplo, você tenta excluir o arquivo, porque, se não se lembrar de excluí-lo duas vezes , ele ainda estará lá.

No caso de um programa, isso pode levar a um comportamento difícil de depurar, porque o programa ainda pode ser encontrado no local do link físico. Dependendo do conteúdo da variável de ambiente PATH , ela pode ser executada em circunstâncias diferentes para o que é o caso agora.

Os hard links são como goto s na programação: uma ressaca de um tempo antigo, agora considerado prejudicial .

    
por andy256 05.01.2016 / 01:19