我试图将 $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
答案1
我相信这是行不通的,因为 shell 会尝试打开文件名中包含空格的二进制文件,所以Emacs -nw
,而不是打开Emacs
,然后-nw
作为选项传递。
如何制作$EDITOR
一个小的(可执行)脚本,例如~/bin/EDITOR
?
#!/bin/sh
/Applications/Emacs.app/Contents/MacOS/Emacs -nw -- "$@"
然后,只需添加到你的 shell 的配置中:
export EDITOR=~/bin/EDITOR
现在,EDITOR
将使用适当的参数调用脚本,在中扩展$@
。
答案2
如此处所述:zsh:未找到命令(对于 $EDITOR) ,zsh 将扩展的变量视为一个单词(其中包含空格字符)。
可能的解决方案包括:
在 bash 中运行,可以正确扩展空间
在参数扩展中使用“=”修饰符:参见扩张在
zsh
文档中查找“${=spec}”调用 $EDITOR 时使用 eval,如下所示:
eval $EDITOR file