14

Я использую 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, но здесь это абсолютно не критично.

1 ответ1

4

Вы можете поместить командную строку компиляции в скрипт bash, который является источником сценариев компиляции перед выполнением команды компиляции.

Что-то вроде

    #!/bin/bash
    . /path/to/environmentscript
    . /path/to/morefunctionsscript

    compile_command

Затем вместо того, чтобы вручную вызывать compile_command , вы просто запускаете новый скрипт bash.

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .