你的
EDITOR
变量
是
设置正确。如果执行以下操作,则可以看到:
echo "$EDITOR"
看看下面的成绩单:
pax> export EDITOR='mvim -f -c "au VimLeave * !open -a Terminal"'
pax> echo $EDITOR
mvim -f -c "au VimLeave SecretCiaDoc.txt NsaEchelonKeys.txt !open -a Terminal"
pax> echo "$EDITOR"
mvim -f -c "au VimLeave * !open -a Terminal"
你的问题不在于
set
但与你的
echo
. 这个
设置
不会扩展
*
因为它包含在单引号中,但是执行
回声
不带引号
将
展开它。
这不会影响使用环境变量的程序。
根据您的评论:
这仍然很奇怪:那
*
仍在引号(双引号)内
回声
命令。
a='abc "*" xyz'; echo $a
不会在bash或dash中为我扩展;事实上,它将引号作为第二个参数。
注意:
pax> a='abc "*" xyz' ; echo $a
abc "*" xyz
pax> a='abc "* xyz' ; echo $a
abc "* xyz
pax> a='abc " * xyz' ; echo $a
abc " SecretCiaDoc.txt NsaEchelonKeys.txt xyz
pax> touch '"hello' ; a='abc "* xyz' ; echo $a
abc "hello xyz
看看发生了什么。这不是治疗
"
像任何特殊的东西一样,只是另一个角色。它为您扩展的原因
编辑
因为它是独立的。当你使用
"*"
,它实际上试图扩展以
“
-你可以在我上面的最后一个例子中看到。