Почему `which` указывает на другой двоичный файл? [duplicate]

На этот вопрос уже есть ответ здесь:

У меня в системе установлено 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

2
задан 9 June 2017 в 04:09

1 ответ

Если Вы работаете:

echo $PATH

Вы собираетесь получить что-то подобное:

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

, Как Вы видите, /usr/local/bin, имеет более высокий приоритет, таким образом, удар найдет Вашу локально установленную версию завихрения сначала и прекратит искать больше.

можно изменить это поведение путем редактирования PATH переменная среды, например, (в .profile):

PATH=/usr/sbin:/usr/bin:/sbin:/bin:/usr/local/sbin:/usr/local/bin
1
ответ дан 2 December 2019 в 04:48

Другие вопросы по тегам:

Похожие вопросы: