我的系统上安装了2个版本的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