システムにcurlの2つのバージョンがインストールされており、1つは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
です
実行する場合:
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