7

Я пытаюсь установить для переменной $ EDITOR значение emacs без окна, поэтому команда для ее вызова будет иметь вид emacs -nw . Однако, если я установлю это так:

export EDITOR="/Applications/Emacs.app/Contents/MacOS/Emacs -nw"

Я получаю следующую ошибку

zsh: no such file or directory: /Applications/Emacs.app/Contents/MacOS/Emacs -n

2 ответа2

6

Я считаю, что это не работает, потому что оболочка будет пытаться открыть двоичный файл с пробелом, включенным в имя файла, поэтому Emacs -nw , а не открывать Emacs а затем передать -nw в качестве параметров.

Как насчет сделать $EDITOR небольшим (исполняемым) скриптом, например, в ~/bin/EDITOR?

#!/bin/sh
/Applications/Emacs.app/Contents/MacOS/Emacs -nw -- "$@"

Затем просто добавьте в конфигурацию вашей оболочки:

export EDITOR=~/bin/EDITOR

Теперь EDITOR вызовет скрипт с соответствующими аргументами, расширенными в $@ .

5

Как объяснено здесь: zsh: Команда не найдена (для $ EDITOR), zsh рассматривает расширенную переменную как одно слово (в котором есть пробелы).

Возможные решения:

  • запустить в Bash, который правильно расширяет пространство

  • Используйте модификатор '=' при расширении параметра: смотрите Расширение в документации zsh и ищите '$ {= spec}'

  • используйте eval при вызове $ EDITOR, как в:

    eval $EDITOR file

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .