带参数的 Unix 环境变量

bne*_*eil 10 unix zsh environment-variables

我试图将我的 $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

slh*_*hck 8

我相信这不起作用,因为 shell 会尝试打开一个二进制文件,文件名中包含空格,所以Emacs -nw,而不是打开Emacs,然后-nw作为选项传递。

如何制作$EDITOR一个小的(可执行的)脚本,例如在~/bin/EDITOR

#!/bin/sh
/Applications/Emacs.app/Contents/MacOS/Emacs -nw -- "$@"
Run Code Online (Sandbox Code Playgroud)

然后,只需添加到您的 shell 配置中:

export EDITOR=~/bin/EDITOR
Run Code Online (Sandbox Code Playgroud)

现在,EDITOR将使用适当的参数调用脚本,在$@.


mca*_*lex 6

如此处所述:zsh: Command not found (for $EDITOR) , zsh 将扩展变量视为单个单词(其中包含空格字符)。

可能的解决方案是:

  • 在 bash 中运行,它可以正确扩展空间

  • 在使用参数扩展的“=”修改器:看扩展zsh的文档,并查找“$ {=规范}”

  • 在调用 $EDITOR 时使用 eval ,如下所示:

    eval $EDITOR file


归档时间:

查看次数:

2206 次

最近记录:

7 年 前