В справочной странице 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
но я не знаю, так ли это хорошая идея.