Por que 'qual' aponta para um binário diferente? [duplicado]

2

Eu tenho 2 versões do curl instaladas no meu sistema, uma com suporte a http2.

Eu achei que poderia usar which para apontar para o binário, mas não parece funcionar da maneira esperada.

$ curl --http2 -I https://something.example.com
curl: (1) Unsupported protocol
$ which curl
/usr/local/bin/curl
$ /usr/local/bin/curl --http2 -I https://something.example.com
HTTP/2 200  
server: nginx/1.10.0 (Ubuntu)  
date: Thu, 08 Jun 2017 20:55:09 GMT  
content-length: 928  
last-modified: Thu, 08 Jun 2017 19:43:10 GMT  
cache-control: public, max-age=31536000  
accept-ranges: bytes  

which está apontando para meu binário localmente construído /usr/local/bin/curl , mas o comando real está executando o pacote binário /usr/bin/curl

Eu não tenho um apelido para enrolar, então alguém pode me explicar por que isso acontece? E qual comando devo executar para encontrar o caminho real para enrolar, o que eu sei é /usr/bin/curl

    
por Jeff Puckett 08.06.2017 / 23:09

1 resposta

1

Se você executar:

echo $PATH

Você terá algo parecido com:

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

Como você pode ver, /usr/local/bin tem uma prioridade mais alta, então o bash encontrará sua versão do curl instalada localmente e parará de procurar mais.

Você pode alterar esse comportamento editando a variável de ambiente PATH , por exemplo, (em .profile ):

PATH=/usr/sbin:/usr/bin:/sbin:/bin:/usr/local/sbin:/usr/local/bin
    
por Ravexina 08.06.2017 / 23:12