Vários binários com o mesmo nome

1

Se eu tenho dois arquivos executáveis com o mesmo nome no $ PATH, como o Ubuntu decide qual deles usar quando for executado no terminal?

Por exemplo, meu Ubuntu originalmente tinha o python instalado em / usr / bin / python. Recentemente, instalei a distribuição do python do Anaconda, que tem seu próprio binário instalado em / home / karnivaurus / anaconda / bin / python. Então, no meu arquivo .bashrc, eu digitei:

export PATH="/home/karnivaurus/anaconda/bin:$PATH"

Portanto, ambos os binários estão agora no PATH. Mas se eu rodar o python no terminal, ele sempre usa a instalação original, ao invés da versão do Anaconda. Por que isso acontece?

    
por Karnivaurus 12.10.2015 / 13:24

1 resposta

1

Para otimizar a busca de comandos, o bash mantém um cache, por processo bash, de onde encontrou arquivos. Portanto, se você digitou python e o encontrou em / usr / bin /, alterar o PATH para fornecer outro python anteriormente no PATH não terá efeito. Você também precisa dar o comando bash:

hash -r

para esquecer o cache otimizado. Veja help hash . (Claro, eu suponho que você tenha relido o .bashrc ou definir o PATH explicitamente em seu shell também).

    
por meuh 12.10.2015 / 14:17