¿Por qué "cuál" apunta a un binario diferente?

¿Por qué "cuál" apunta a un binario diferente?

Tengo 2 versiones de curl instaladas en mi sistema, una con soporte http2.

Pensé que podría utilizar whichpara señalar el binario, pero no parece funcionar como esperaba.

$ 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  

whichapunta a mi binario creado localmente /usr/local/bin/curlpero el comando real está ejecutando el paquete binario/usr/bin/curl

No tengo un alias para curl, entonces ¿alguien puede explicarme por qué es así? ¿Y qué comando debo ejecutar para encontrar la ruta real a curl, que sé que es/usr/bin/curl

Respuesta1

Si tu corres:

echo $PATH

Obtendrás algo similar a:

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

Como puede ver, /usr/local/bintiene una prioridad más alta, por lo que bash encontrará primero su versión de curl instalada localmente y dejará de buscar.

Puede cambiar este comportamiento editando PATHla variable de entorno, por ejemplo (en .profile):

PATH=/usr/sbin:/usr/bin:/sbin:/bin:/usr/local/sbin:/usr/local/bin

información relacionada