Você está correto. Pacotes de terceiros devem, portanto, apenas estender o caminho atual, não limitá-lo.
Instalei o rbenv, um programa de gerenciamento de versão em ruby. Eu olhei no arquivo .bashrc e notei que a variável path foi alterada conforme abaixo:
export PATH="$HOME/.rbenv/bin:$PATH"
Acho que a parte ": $ PATH" foi incluída para incluir o conteúdo do caminho antigo. Gostaria de saber o que aconteceria se um programa que modifica a variável de caminho não incluir a parte ": $ PATH". Não seria possível executar alguns programas a partir da linha de comando, pois os diretórios bin nos quais eles residem não são mais incluídos na nova variável path?
Você está correto. Pacotes de terceiros devem, portanto, apenas estender o caminho atual, não limitá-lo.
PATH
é uma lista de diretórios separados por dois pontos que seu shell ( bash
, fish
, ksh
, sh
, etc) usa para localizar algo a ser executado. Se a primeira palavra da linha que você digita no shell não for um shell embutido ou um alias, o shell percorre a lista de diretórios em $PATH
, procurando por um arquivo executável com o mesmo nome da primeira palavra do comando que você digitado.
command not found
de erros para comandos comuns ( da/media/w3/0123-4567/PODCASTS/2016-Nov-27/loe-wildlife-decline.mp3te
, ls
, ...) é indicativo de um PATH
malformado. Uma emergência PATH
(o suficiente para permitir que você corrija o problema pode ser definido com export PATH=/usr/bin:/bin:/usr/local/bin:/snap/bin
.
Muitos erros de PATH
são erros de sintaxe de shell ( Espaço antes ou depois de =
. É PATH=value
, sem espaços).
Em relação à "corrupção de caminho", se eu tiver criado uma versão "especial" de ls
, armazenada em /.evil/bin/ls
, E posso corromper seu caminho para que ele tenha /.evil/bin
ANTES /bin
, quando você digita ls
, o shell executará /.evil/bin/ls
em vez de /bin/ls
. Um gotcha bem conhecido, mas o seu sistema está completamente penetrado no momento em que se torna útil.
Você poderia executá-los, você só precisa especificar o caminho completo. A modificação de PATH
não modifica as permissões associadas.