ti-enxame.com

Como posso tornar um programa executável de qualquer lugar

O que devo fazer se quiser executar um determinado programa, independentemente do meu diretório atual? Devo criar um link simbólico para o programa no /bin pasta?

79
aneuryzm

Se você apenas digitar export PATH=$PATH:</path/to/file> na linha de comando, durará apenas a duração da sessão.

Se você deseja alterá-lo permanentemente, adicione export PATH=$PATH:</path/to/file> para o seu arquivo ~/.bashrc (apenas no final está bom).

55
oadams

A resposta curta é que, para executar o programa, independentemente do seu diretório, você precisa ter o diretório do programa no seu caminho de pesquisa. O problema pode ser resolvido colocando o programa em uma pasta que já esteja nesse caminho ou adicionando uma nova pasta ao caminho - ou ele funcionará. A melhor resposta depende de:

Este programa é um programa baixado que você compilou da fonte?

É bastante provável que já tenha um mecanismo de instalação. Na pasta que você compilou o programa, como root, execute 'make install'

Este programa é um programa baixado que você deseja disponibilizar como parte dos programas padrão no computador?

Faz sentido colocar esse tipo de aplicativo em uma pasta padrão. é bastante comum usar diretórios como/usr/local/bin para esses programas. Você precisará de acesso root para fazer isso.

Este é um programa que você escreveu para si próprio e/ou não possui privilégios especiais no computador.

Criando uma pasta em seu diretório pessoal chamada 'bin' e colocando o programa nela. Pode ser necessário editar seu script de login para adicionar o caminho completo a esta pasta (por exemplo,/usr/home/jeremy/bin)

Embora você possa apenas adicionar seu diretório atual ao caminho de pesquisa, precisará continuar fazendo isso a cada novo programa - e é mais trabalhoso a longo prazo.

24
Michael Shaw

Colocar um link para o arquivo no diretório /bin Não é a melhor coisa a fazer por vários motivos.

  • Se o arquivo executável real estiver em um local que alguns usuários não podem ver ou executar, eles o veem como um link incorreto ou um programa disfuncional.
  • O diretório /bin Deve ser reservado para programas necessários para a execução do sistema (coisas como chmod, mkdir, etc).

Você pode realmente colocar (instalar) o arquivo executável em /usr/bin/ Ou mesmo /usr/local/bin/. Obviamente, você instalou o programa manualmente nesse ponto; sua distribuição não a acompanhará da mesma forma que os demais programas - você precisará atualizá-la manualmente quando necessário e removê-la manualmente, se desejar. Além disso, você terá que saber de quais pacotes depende (parece que você já usa o programa, portanto, isso foi resolvido, mas em geral ...).

A menos que eu esteja configurando um programa que espero que outros usuários usem, não é o que costumo fazer: eu crio um diretório bin apenas para mim no meu diretório pessoal e edito meu perfil do Shell para adicionar ~/bin/ para minha variável de ambiente PATH. Acho mais fácil acompanhar os programas que instalei dessa maneira, porque ele é separado do restante do sistema.

17
Shawn J. Goff

Se você deseja executar um comando foo no diretório em que seu Shell está, basicamente você tem duas opções:

  1. Tipo ./foo no prompt da Shell.

  2. Adicione o . diretório (. é um nome para "o diretório atual") para a variável de ambiente PATH; como você faz isso depende do Shell que você está usando:

    • para shells do tipo Bourne (bash, zsh, ksh, etc.) que você escreve (consulte esta página para obter mais informações):

      export PATH=$PATH:.
      
    • para shells do tipo csh (tcsh, csh) que você escreve (consulte esta página para obter mais informações):

      set path = ( $path .)
      

Observe que 2. é um risco à segurança em sistemas multiusuário: imagine que você cd no diretório /tmp e um usuário mal-intencionado criou um binário de malware chamado ls lá.

6
Riccardo Murri

Mexer com o PATH abre a execução de programas maliciosos por engano. O padrão é instalar coisas "locais" em /usr/local (consulte FHS , que codifica o uso do Unix: um pouco datado, mas fornece justificativa)., /usr/local/bin geralmente está no PATH para todos os usuários.

Meus programas "instalados localmente" estão em $HOME/bin, definido na dança padrão por ./configure --prefix=$HOME ..., juntamente com alguns aliases (bash) para selecionar, por exemplo git auto-construído sobre o sistema (os não conflitantes são encontrados no PATH no final.

1
vonbrand