Como posso fazer um programa executável de qualquer lugar?

60

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

    
por aneuryzm 06.11.2010 / 13:24

5 respostas

39

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

Se você quiser alterá-lo permanentemente, adicione export PATH=$PATH:</path/to/file> ao seu arquivo ~ / .bashrc (no final, tudo bem).

    
por 06.11.2010 / 22:32
20

A resposta curta é que, para executar o programa, não importa o seu diretório, você precisa ter o diretório do programa em 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 funcionará. A melhor resposta depende de:

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

É bem 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 tais programas. Você precisará de acesso root para fazer isso.

Este é um programa que você escreveu para si mesmo e / ou você não tem privilégios especiais no computador.

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

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

    
por 07.11.2010 / 20:28
14

Colocar um link para o arquivo no diretório /bin não é a melhor coisa por várias razões.

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

Você pode realmente colocar (instalar) o arquivo executável em /usr/bin/ ou mesmo /usr/local/bin/ . Claro, você instalou manualmente o programa naquele ponto; sua distribuição não vai acompanhar como funciona o resto dos seus programas - você terá que atualizá-lo manualmente quando necessário e removê-lo manualmente se quiser. Além disso, você terá que saber de quais pacotes isso depende (parece que você já usa o programa, então isso é feito, mas em geral ...).

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

    
por 07.11.2010 / 00:19
6

Se você quiser executar um comando foo no diretório em que seu shell está atualmente, basicamente terá duas opções:

  1. Digite ./foo no prompt do shell.

  2. Adicione o diretório . ( . é um nome para "o diretório atual") à 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 (veja esta página para mais informações):

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

      set path = ( $path .)
      

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

    
por 06.11.2010 / 13:46
1

Mexer com o PATH abre você para executar programas maliciosos por engano. O padrão é instalar coisas "locais" em /usr/local (veja FHS , que codifica o uso do Unix: um pouco datado, mas dá lógica )., /usr/local/bin geralmente está no PATH para todos os usuários.

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

    
por 17.01.2016 / 18:23