zsh에서 bash를 사용하여 쉘 스크립트를 '소싱'하는 방법은 무엇입니까?


14

zsh를 사용하고 있으며 매우 좋아하지만 bash를 올바르게 평가 해야하는 컴파일 스크립트가있는 Android 소스에서 많은 작업을 수행합니다. 이러한 스크립트는 컴파일 전에 소싱해야하며 컴파일 중에 사용되는 환경 변수 및 쉘 기능을 정의해야합니다.

Zsh는 이러한 파일을 소싱 할 수 없으며, emulate bash공간을 사용할 때마다 쉘 에서 문제가 발생하여 쉘이 작동하지 않게됩니다 (oh-my-zsh를 사용 중일 수 있습니다).

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

이 파일을 평가하기 위해 bash로 전환하지 않거나 bash 인스턴스를 호출하고 zsh 세션으로 소싱하는 동안 정의 된 새로운 환경 변수 / 함수를 가져 오는 방법이 있습니까? 아니면 Android에서 작업해야 할 때마다 bash로 전환 할 운명이 있습니까?

편집 : 내 자신의 질문에 대한 답변을 찾았습니다. 다른 쉘을 사용하여 파일을 소싱하는 것은 불가능한 것처럼 보이지만 Android 매크로 파일이 실패하는 경우이 페이지에서 수정되었습니다.

http://nilvec.com/building-cyanogen-from-source/

기본적으로 간단히 설정 unsetopt nomatch하면 zsh에서 일치하지 않는 와일드 카드에 대한 불평을 중지하도록 요청하므로 스크립트를 완료하는 데 충분합니다. complete하나의 Android 매크로에 완성 기능을 추가하기 위해 bash internal 명령을 사용하는 경우 여전히 하나의 오류가 남아 있지만 여기서는 절대 중요하지 않습니다.

답변:


4

컴파일 명령을 bash 스크립트에 넣을 수 있는데,이 스크립트는 컴파일 명령을 실행하기 위해 컴파일 스크립트를 제공합니다.

같은 것

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

    compile_command

그런 다음 compile_command직접 호출 하는 대신 새 bash 스크립트를 호출하면됩니다.


그것은 잠재적 인 해결책이지만 불행히도 환경 스크립트는 완료하는 데 몇 초가 걸리며 컴파일 명령은 많이 다릅니다. 그러므로 나는 매일이 일에 의존 할 수 없다.
Gnurou
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.