Як "джерело" скрипта оболонки, використовуючи bash з zsh?


14

Я використовую zsh і мені дуже подобається, але дуже багато працюю з джерелом Android, який має сценарії компіляції, які вимагають правильної оцінки bash. Ці сценарії потрібно отримати до початку компіляції та визначити змінні середовища та функції оболонки, які використовуються під час компіляції.

Zsh не може отримати джерело цих файлів, і якщо я спробую видати emulate bashсвою оболонку, стає нефункціональною з великою кількістю цих помилок кожного разу, коли я потрапляю на пробіл (я використовую oh-my-zsh, можливо, це є причиною?):

url-quote-magic:24: bad pattern: ( ):/(|/localhost)/*

Чи є спосіб, щоб я не перейшов на bash, щоб оцінити ці файли, або викликати екземпляр bash та імпортувати нові змінні середовища / функції, визначені під час пошуку в моєму сеансі zsh? Або я приречений переходити на башти кожен раз, коли мені потрібно працювати на Android?

EDIT : знайшов відповідь на власне запитання. Шукати файл за допомогою іншої оболонки здається неможливим, але у випадку відмови файлів макросів 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.


Це потенційне рішення, але, на жаль, сценарії оточення займають кілька секунд, і команда компіляції сильно відрізняється. Тому я не можу розраховувати на це, щоб працювати щодня.
Gnurou
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.