Проблема

В системе по умолчанию установлена более свежая версия 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).

  1. Откройте конфигурационный файл терминала (например, через LunarVim):
lvim ~/.zshrc
 
  1. Добавьте в конец файла строку:
alias omni22='PATH="/opt/homebrew/opt/node@22/bin:$PATH" omniroute'
 
  1. Примените изменения:
source ~/.zshrc
 

Теперь команда omni22 будет прозрачно запускать утилиту на нужной версии ноды, не затрагивая остальную систему.


Reference:

  • Gemini Flash 3.5