web-dev-qa-db-fra.com

Pourquoi `what` pointe-t-il sur un autre binaire?

J'ai 2 versions de curl installées sur mon système, une avec le support http2.

Je pensais que je pourrais utiliser which pour indiquer le binaire, mais cela ne semble pas fonctionner comme prévu.

$ 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 pointe vers mon binaire construit localement /usr/local/bin/curl mais la commande actuelle exécute le paquet binaire /usr/bin/curl

Je n'ai pas d'alias pour curl, alors quelqu'un peut-il m'expliquer pourquoi c'est le cas? Et quelle commande devrais-je exécuter pour trouver le chemin réel de curl, que je connais est /usr/bin/curl

2
Jeff Puckett

Si vous courez:

echo $PATH

Vous allez obtenir quelque chose de similaire à:

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

Comme vous pouvez le constater, /usr/local/bin a une priorité plus élevée. Ainsi, bash localisera d’abord votre version de curl installée localement et cessera d’en chercher.

Vous pouvez modifier ce comportement en modifiant la variable d’environnement PATH, par exemple (dans .profile):

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