【发布时间】:2011-05-02 10:37:12
【问题描述】:
我正在尝试在 Mac OS X 10.6.4 的 bash 中运行以下脚本行(来自 this question):
$ export EDITOR='mvim -f -c "au VimLeave * !open -a Terminal"'
唉,我得到的是意想不到的东西:
$ 回声 $EDITOR
mvim -f -c "au VimLeave 桌面文档下载库电影音乐图片公共站点 bin !open -a 终端"
预期的输出是:
$ 回声 $EDITOR
mvim -f -c "au VimLeave * !open -a 终端"
解决此问题的方法是设置noglob,即在export 分配之前立即运行set -f。然而,手头的问题是这是否是 Mac OS X 上的预期行为,因为(因为默认情况下未设置 noglob,即 set +f)还是因为在 Mac OS X 上 bash 中存在错误。
bash 的版本是:
$ bash --版本 GNU bash,版本 3.2.48(1)-release (x86_64-apple-darwin10.0) 版权所有 (C) 2007 Free Software Foundation, Inc.A practical guide to Unix for Mac OS X users 的第 329 页可能会提供一些帮助:“除非设置了 noglob(第 320 页),否则 shell 在遇到不明确的文件引用时会执行 [路径名扩展]——一个包含任何不带引号的字符 &、?、[ 或 ]。”。然而,因为被通配的* 是在引号内,所以问题仍然存在:该行为是 bash 的默认设置还是错误?
这只是一种好奇,但如果您有任何想法和意见,我将不胜感激。
布赖恩
【问题讨论】: