В справочной странице whereis
четко сказано (выделено мое):
Утилита whereis проверяет стандартные двоичные каталоги на наличие указанных программ, распечатывая пути для любых найденных программ.
Поиск пути - это строка, возвращаемая утилитой sysctl (8) для строки `` user.cs_path ''
В противоположность этому, which
это инструмент, который обычно используется, чтобы проверить, где двоичный файл для пути вашего пользователя.
Утилита which берет список имен команд и ищет путь для каждого исполняемого файла, который будет запущен, если эти команды действительно будут вызваны .
Это объясняет вашу разницу, поскольку /opt/local/bin
это не общесистемный «стандартный» путь - в конце концов, MacPorts - это совершенно необязательный вариант установки, и он sysctl
имеет только /usr/bin:/bin:/usr/sbin:/sbin
его user.cs_path
значение по умолчанию.
В общем, придерживайтесь which
или, which -a
чтобы найти двоичный файл, а не использовать whereis
.
Вы можете теоретически изменить user.cs_path
через
sysctl -w user.cs_path=/opt/local/bin:/usr/bin:/bin:/usr/sbin:/sbin
но я не знаю, так ли это хорошая идея.