Проблема
В системе по умолчанию установлена более свежая версия Node.js (например, Node 25). Однако определенная утилита или CLI-пакет (например, omniroute или obsidian-hybrid-search требует для корректной работы более старую версию (Node 22), которая установлена через Homebrew (node@22). Изменять системный $PATH на постоянной основе не хочется, чтобы не ломать дефолтное окружение.
Решение: Временная подмена $PATH на один запуск
В zsh / bash можно переопределить переменную окружения $PATH прямо перед вызовом исполняемого файла в пределах одной строчки. Это изменение применится только для этой конкретной команды и сбросится сразу после её завершения.
Абсолютный путь к Node 22 (Homebrew на Apple Silicon)
Полноценный бинарник изолированной 22-й ноды от Homebrew живет по пути:
/opt/homebrew/opt/node@22/bin
Одноразовая команда для запуска
Чтобы запустить omniroute строго на 22-й версии Node, выполните:
PATH="/opt/homebrew/opt/node@22/bin:$PATH" omniroute
Как это работает?
Терминал видит локальное переопределение
PATH. При поиске бинарников он сначала заглядывает в папкуnode@22/bin, находит там старыйnode, запускает через негоomniroute, а для всех последующих команд снова использует глобальный Node 25.
Автоматизация через Алиасы (.zshrc)
Чтобы не писать длинную конструкцию каждый раз, можно создать короткий псевдоним (alias).
- Откройте конфигурационный файл терминала (например, через LunarVim):
lvim ~/.zshrc
- Добавьте в конец файла строку:
alias omni22='PATH="/opt/homebrew/opt/node@22/bin:$PATH" omniroute'
- Примените изменения:
source ~/.zshrc
Теперь команда omni22 будет прозрачно запускать утилиту на нужной версии ноды, не затрагивая остальную систему.
Reference:
- Gemini Flash 3.5