Adicionar um binário ao meu caminho

15

Eu tenho um executável. Eu quero executar o executável no terminal com o nome apenas como outros comandos.

Posso colocar meu executável /usr/local/binou posso adicioná PATH-lo ~/.bashrc. Ambos irão funcionar.

O que é melhor? Existe alguma diferença?

Mohammad Reza Rezwani
fonte

Respostas:

12

Por exemplo, deixe-me supor, você tem um executável myscript. Você precisa executá-lo a partir de um terminal como,

/path/to/myscript

Alteração no nível do usuário

Se você adicionar o PATHexecutável a ~/.bashrc, poderá executá-lo com o nome apenas de qualquer lugar ( Avinash Raj já mencionado), como

myscript

Mas a mudança será afetada no nível do usuário . Isso significa que, se você tiver outros usuários, eles não poderão acessar o executável apenas com o nome. Se eles têm permissão adequada, precisam executar o executável como,

/path/to/myscript

Além disso, você não poderá executar o script como sudo, pois não está no PATHroot. Para executar conforme sudonecessário,

sudo /path/to/myscript

mudança no nível do sistema

Se você colocar seu script, /usr/local/binele poderá ser acessado em todo o sistema e para todos os usuários. Nesse caso, qualquer usuário pode executar seu executável como (sujeito a ter permissões apropriadas)

myscript

Nesse caso, você pode executar o executável e sudotambém como,

sudo myscript

Agora escolha uma maneira, dependendo da sua necessidade.

souravc
fonte
2

Adicionar o local do arquivo à sua $PATHvariável no seu ~/.bashrcarquivo permitirá apenas executar em qualquer local, enquanto colocá-lo /usr/bin/permitirá que todos os usuários em seu sistema executem esse arquivo em qualquer local.

Por que é que? Porque, seu ~/.bashrcarquivo é visível apenas para você como usuário. Portanto, todas as alterações variáveis ​​feitas são limitadas a você. Considerando que, adicionar esse arquivo a /usr/binpermitirá que ele permaneça lá para todos os usuários e, como /usr/binestá presente na $PATHvariável, a menos que alguém o remova, permitirá que todos os usuários o executem em qualquer local.

jobin
fonte
1

Se você colocar o arquivo executável em /usr/binou /usr/local/bin, poderá executar esse programa especificando apenas o nome (em your-programvez de /usr/local/bin/your-program).

Se você adicionar o diretório que contém o programa ao ~/.bashrcarquivo PATH, então qualquer arquivo executável presente nesse diretório poderá ser iniciado digitando apenas seu nome.

Avinash Raj
fonte
1
Esta informação é falsa, você ainda pode iniciar o executável, mesmo que não esteja "nesse diretório".
Lekensteyn
Como isso é falso ?, explique um pouco mais.
precisa
1
Ok, eu tive dificuldade em ler sua resposta (e, portanto, cometi um erro), então eu a editei para remover a confusão e remotei o voto negativo. Espero que ajude.
Lekensteyn
Então, a pergunta é: o que é melhor? Existe alguma diferença? Você praticamente não disse nada além do OP.
Radu Rădeanu
Respondi à pergunta do sistema operacional, mas não em um formato breve.
Avinash Raj
0

Apenas como complemento à resposta @souravc ...

Para a "Alteração no nível do usuário", em vez de editar o ~/.bashrcarquivo, você pode simplesmente criar o diretório $HOME/bin/e colocar seus scripts nele.

O diretório será automaticamente adicionado ao PATH(pelo menos desde o Ubuntu 12.04), o que significa que você poderá executar todos os scripts / executáveis ​​dentro desse diretório com um simples:

myscript

Apenas meus 2 centavos. :)

PS- Tentei postar isso como um comentário na resposta @souravc, mas não tinha reputação suficiente. :-(

Sem descanso
fonte