Unix environment variables with arguments
Solution 1:
I believe this doesn't work because the shell would try to open a binary with the space included in the file name, so Emacs -nw
, and not open Emacs
and then pass -nw
as the options.
How about making $EDITOR
a small (executable) script, e.g. in ~/bin/EDITOR
?
#!/bin/sh
/Applications/Emacs.app/Contents/MacOS/Emacs -nw -- "$@"
Then, simply add to your shell's configuration:
export EDITOR=~/bin/EDITOR
Now, EDITOR
will call the script with the appropriate arguments, expanded in $@
.
Solution 2:
As explained here: zsh: Command not found (for $EDITOR) , zsh treats the expanded variable as a single word (that has space characters in it).
Possible solutions are:
run in bash which expands the spaces properly
Use the '=' modifier on parameter expansion: see Expansion in the
zsh
documentation and look for '${=spec}'-
use eval when calling $EDITOR as in:
eval $EDITOR file