Странное разрешение пути к команде

У меня есть редактор терминала 'nano', установленный в двух местах на моем Mac

/usr/bin/nano

/opt/local/bin/nano

Установки бывают разных версий. Тот в /usr не поддерживает мою конфигурацию в ~/.nanorc и тот, в /opt делает.

Когда я открываю файл с помощью команды "nano file", отображаются ошибки, указывающие, что /usr использовался, однако, если я запускаю 'which nano'; один в /opt появляется.

Разве "который" не предназначен для поиска пути по умолчанию? И почему бы не обратиться к "нано" по тому же пути?

Я сделал обходной путь, добавив следующую строку в ~/.profile

alias nano='/opt/local/bin/nano'

1 ответ

Двоичные файлы хэшируются и разрешаются в том порядке, в котором их родительские каталоги появляются в переменной среды PATH. Настройте его в соответствии с вашими потребностями. По крайней мере, это верно для моего опыта с bash. Подумайте о том, чтобы заглянуть на страницу руководства вашей оболочки и найти COMMAND EXECUTION и PATH, если то, что я вам говорю, не относится к вашей оболочке.

Например, если бы я хотел foo означать / home / me / bin / foo, а не / usr / local / bin / foo, тогда я бы поместил / home / me / bin / before / usr / local / bin в путь, где before означает слева от :

PATH = (...): / главная / мне / бен: (...): / USR / местные / бен: (...)

Путь обычно задается в / etc / profile или в ~ / .profile.

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