Я использую zsh и мне это очень нравится, но я много работаю с исходным кодом Android, который имеет скрипты компиляции, которые требуют правильной оценки bash. Эти сценарии должны быть получены до компиляции и определять переменные среды и функции оболочки, которые используются во время компиляции.
Zsh не может получить исходные файлы, и если я пытаюсь выполнить emulate bash
моя оболочка становится нефункциональной с большим количеством этих ошибок каждый раз, когда я сталкиваюсь с пробелом (я использую oh-my-zsh, может быть, это причина?):
url-quote-magic:24: bad pattern: ( ):/(|/localhost)/*
Есть ли способ для меня не переключаться на bash для оценки этих файлов или вызывать экземпляр bash и импортировать новые переменные / функции окружения, которые он определил во время поиска, в мой сеанс zsh? Или я обречен переключаться на bash каждый раз, когда мне нужно работать на Android?
РЕДАКТИРОВАТЬ: нашел ответ на свой вопрос. Поиск файла с использованием другой оболочки не представляется возможным, но в случае сбоя макро-файлов Android эта страница принесла исправление:
http://nilvec.com/building-cyanogen-from-source/
По сути, простая установка unsetopt nomatch
попросит zsh перестать жаловаться на несоответствующие символы подстановки, что достаточно для завершения сценариев. Остаётся ещё одна ошибка, связанная с использованием complete
внутренней команды bash для добавления возможностей завершения к одному макросу Android, но здесь это абсолютно не критично.