Я пытаюсь запустить следующую строку скрипта в bash на Mac OS X 10.6.4 (из этот вопрос ):
$ export EDITOR='mvim -f -c "au VimLeave * !open -a Terminal"'
Увы, что я получаючто-то неожиданное:
$ echo $ EDITORmvim -f -c "au VimLeave Desktop Документы Файлы для загрузки Библиотека Фильмы Музыка Картинки Общедоступные сайты bin! open -a Terminal"
Ожидаемый результат:
$ echo $ EDITORmvim -f -c "au VimLeave *! open -a Terminal"
Чтобы исправить это, необходимо установить noglob
, т.е. запустить set -f
непосредственно перед назначением export
.Тем не менее, возникает вопрос, является ли это ожидаемым поведением в Mac OS X, потому что (потому что noglob
не установлено по умолчанию, то есть set +f
) или потому что есть ошибка в bash
в Mac OS X.
Версия bash:
$ bash --version
GNU bash, version 3.2.48(1)-release (x86_64-apple-darwin10.0)
Copyright (C) 2007 Free Software Foundation, Inc.
Может быть некоторая помощь на странице 329 из A practical guide to Unix for Mac OS X users
: «Если не установлен noglob (страница 320), оболочка выполняет [расширение имени пути»] когда он встречает неоднозначную ссылку на файл - токен, содержащий любой из символов без кавычек &,?, [или]. ".Однако из-за того, что *
находится внутри кавычек, остается вопрос: это поведение по умолчанию для bash или ошибка?
Это просто любопытство, но я был бы благодарен за любые мыслии ввод вы можете иметь.
Брайан