我的系統上安裝了兩個版本的curl,其中一個支援http2。
我以為我可以用來which
指向二進位文件,但它似乎沒有按我預期的方式工作。
$ 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
指向我本地建置的二進位文件/usr/local/bin/curl
,但實際命令正在執行包二進位文件/usr/bin/curl
我沒有curl 的別名,所以有人可以跟我解釋為什麼會這樣嗎?我應該運行什麼命令來查找curl的實際路徑,我碰巧知道的是/usr/bin/curl
答案1
如果你運行:
echo $PATH
你會得到類似的東西:
/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin
正如你所看到的,/usr/local/bin
具有更高的優先級,因此bash將首先找到你本地安裝的curl版本並停止搜尋。
您可以透過編輯PATH
環境變數來更改此行為,例如(在.profile
):
PATH=/usr/sbin:/usr/bin:/sbin:/bin:/usr/local/sbin:/usr/local/bin