Ich habe zwei Versionen von Curl auf meinem System installiert, eine mit HTTP2-Unterstützung.
Ich dachte, ich könnte which
auf die Binärdatei verweisen, aber es scheint nicht so zu funktionieren, wie ich es erwarte.
$ 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
zeigt auf meine lokal erstellte Binärdatei, /usr/local/bin/curl
aber der eigentliche Befehl führt die Paketbinärdatei aus/usr/bin/curl
Ich habe keinen Alias für curl. Kann mir bitte jemand erklären, warum das so ist? Und welchen Befehl muss ich ausführen, um den tatsächlichen Pfad zu curl zu finden, von dem ich zufällig weiß, dass er lautet:/usr/bin/curl
Antwort1
Wenn du läufst:
echo $PATH
Sie erhalten ungefähr Folgendes:
/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin
Wie Sie sehen, /usr/local/bin
hat es eine höhere Priorität, sodass Bash zuerst Ihre lokal installierte Version von Curl findet und die weitere Suche einstellt.
Sie können dieses Verhalten ändern, indem Sie PATH
die Umgebungsvariable bearbeiten, zB (in .profile
):
PATH=/usr/sbin:/usr/bin:/sbin:/bin:/usr/local/sbin:/usr/local/bin