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

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

나는 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-yanogen-from-source/

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

답변1

컴파일 명령을 실행하기 전에 컴파일 스크립트를 소스로 제공하는 bash 스크립트에 컴파일 명령줄을 넣을 수 있습니다.

같은 것

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

    compile_command

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

관련 정보