Как «получить» сценарий оболочки, используя bash из zsh?


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

Ответы:


4

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

Что-то вроде

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

    compile_command

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


Это потенциальное решение, но, к сожалению, выполнение сценариев среды занимает несколько секунд, а команда компиляции сильно различается. Поэтому я не могу полагаться на это, чтобы работать ежедневно.
Гнуроу
Используя наш сайт, вы подтверждаете, что прочитали и поняли нашу Политику в отношении файлов cookie и Политику конфиденциальности.
Licensed under cc by-sa 3.0 with attribution required.