O que é a variável PATH do Unix e como faço para adicionar a ela?

11

Muitos tutoriais de programação pedem aos usuários que adicionem algo a eles, PATHmas não explicam o que é. Os recursos existentes que explicam PATHaos usuários novos na linha de comando não são muito bons.

  • Qual é a PATHvariável Unix ?

  • Acabei de baixar um programa, tentei executar um comando no terminal e obtive command not found. O que isso tem a ver com o PATH?

  • Eu adicionei algo ao PATHcomando com este comando e as coisas funcionaram:

    export PATH=/path/to/some/bin:$PATH
    

    ... mas, command not foundnovamente, na próxima vez em que iniciei meu computador. Como posso mantê-lo PATHsempre que abro o Terminal?

  • Qual é a melhor maneira de determinar se um programa como o Git ou gccjá está carregado no meu computador?

Kevin Burke
fonte
3
Eu li muitas das respostas no SO e não encontrei uma resposta que responda a todas essas perguntas de uma maneira que um novato possa entender. Quero algo ao qual possa vincular novos usuários de linha de comando. Era minha esperança adicionar isso como wiki da comunidade e anexar uma recompensa significativa a ele.
22812 Kevin Burke
4
Aposto que posso encontrar 50 hits se pesquisar no google essa pergunta. Por que você não pode?
Trojanfoe
2
E se nenhum desses links apontar para SO para uma pergunta qualificada para estar aqui, ela deverá ser adicionada aqui. Queremos que o SO esteja onde o Google for para questões de programação.
Consulte esta postagem do MSO sobre as motivações de Kevin ao fazer esta pergunta. Ele provavelmente fará uma edição para esclarecer como essas informações são úteis.
precisa
1
@ jmort253: Bem, ele deve começar a fazer isso rapidamente. 4/5 votos perto. Não vou fechar porque sei que quer editar a pergunta, mas é melhor que ele seja rápido.
Madara's Ghost

Respostas:

17

O caminho UNIX é uma variável de ambiente que é uma lista de diretórios nos quais procurar programas que você está tentando executar. Ele permite que você evite ter que usar o nome do caminho completo para executar coisas como /bin/ls(por exemplo, colocando /bino caminho).

Por exemplo, um caminho pode consistir em:

/bin:/usr/bin:/usr/sbin

e isso significa que, quando você digita o comando xyzzy, ele tenta executar o primeiro arquivo encontrado na lista atual:

/bin/xyzzy
/usr/bin/xyzzy
/usr/sbin/xyzzy

( pode pular arquivos não executáveis ​​se estiver sendo inteligente).

Você pode adicionar coisas ao caminho com um comando como:

set PATH=/directory/to/add:$PATH:/low/priority/path

que coloca /directory/to/addno início da lista de pesquisa de caminho e /low/priority/pathno final.

No entanto, isso geralmente muda apenas para o shell atual . Se você quiser fazer uma alteração em cada shell, adicione essa linha a um dos seus arquivos de inicialização, como $HOME/.profileou /etc/profile. O arquivo correto a ser usado depende do próprio shell e de como você configurou os arquivos de inicialização. Nem sempre é fácil dizer para onde deve ir, mas as regras são geralmente explicadas na página de manual para qualquer shell que você esteja usando.

Geralmente, você pode encontrar um comando no caminho com um dos seguintes:

which cmd
whence cmd

para localizar o cmdexecutável. Por exemplo, no meu sistema Debian, recebo a seguinte transcrição:

pax> which ls
/bin/ls

pax> which firefox
/usr/bin/firefox

pax> which xyzzy

pax> 

fonte
1
Esta pergunta pertence ao stackoverflow?
Trojanfoe
@trojanfoe, tanto quanto qualquer pergunta relacionada ao shell, sim, acho que sim. Ele é também uma linguagem de programação.
Modifiquei a resposta para usar :como separador, como é usado no * nix. O Windows usa ;(provavelmente porque :já tem um significado C:).
Joachim Sauer
Na verdade, @Joachim, é possivelmente mais correto dizer que um determinado shell (em vez do próprio UNIX) possui um separador de diretório específico, mas você está certo em todos os que eu uso em cima da minha cabeça. Obrigado pela correção, saúde.
@ paxdiablo: sim, pensei nisso, mas também não consigo pensar em nenhum shell unix que não use :(em Java, por exemplo, path.separatorestá sempre :no * nix).
Joachim Sauer
5

O que é?

A variável de ambiente PATH é uma lista de diretórios delimitada por dois pontos que seu shell pesquisa quando você digita um comando.

Como configurá-lo?

PATH=$PATH:/your/directory
export PATH

Como posso permanecer no PATH toda vez que abro o Terminal?

Coloque as duas linhas anteriores dentro ~/.bash_profile(se você estiver usando basho Terminal).

Pigueiras
fonte
3

PATH é uma variável de ambiente para sistemas do tipo unix.

definir caminho:

export PATH=$PATH:<your path>

caminho não definido:

unset $PATH

definir caminho permanentemente

em sua pasta pessoal, ative Exibir -> Mostrar arquivos ocultos .... arquivo .bash_profile pen, antes de exportar a linha PATH, adicione esta linha .....

PATH=$PATH:<yourpath>

sair e entrar novamente ...... verifique se está funcionando ... bem! deve funcionar .....

Shantanu Banerjee
fonte
1
Desculpe o voto negativo, mas este é mal formatado e redigido. Tente evitar o uso excessivo de negrito, uso excessivo de reticências ("...") e escreva frases completas. Isso deve ajudar a evitar votos negativos no futuro.
Joachim Sauer
1
@Joachim Sauer, por que você não edita a resposta? Por que você prefere diminuir o voto?
1
@ MikroDel: porque já existem respostas melhores e de melhor qualidade para esta pergunta e a redução de votos exige menos esforço. Se esta fosse a única resposta, eu provavelmente a teria editado. Além disso: embora geralmente não sejam divertidos, os votos negativos são ferramentas legítimas (sim, existem setas para cima e para baixo ao lado de cada pergunta / resposta).
Joachim Sauer
1
editar ou publicar este comentário take perto ao mesmo tempo, mas editar torná-lo melhor, e ajuda Shantanu Banerjee e outros usuários
@ MikroDel: explicar o motivo por trás de um voto negativo não ajuda o usuário? Acho que fui bastante claro sobre o meu raciocínio e dei dicas práticas sobre como melhorar a qualidade. A única coisa que sua insistência reduz é minha vontade de explicar meus votos negativos (e, como você pode ver no meu perfil, eu não voto excessivamente).
Joachim Sauer