
나는 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 nomatch
zsh가 일치하지 않는 와일드카드에 대한 불평을 중지하도록 요청하며 이는 스크립트를 완료하는 데 충분합니다. 하나의 Android 매크로에 완성 기능을 추가하기 위해 bash 내부 명령을 사용하는 것과 관련하여 여전히 한 가지 오류가 남아 있지만 complete
여기서는 전혀 중요하지 않습니다.
답변1
컴파일 명령을 실행하기 전에 컴파일 스크립트를 소스로 제공하는 bash 스크립트에 컴파일 명령줄을 넣을 수 있습니다.
같은 것
#!/bin/bash
. /path/to/environmentscript
. /path/to/morefunctionsscript
compile_command
compile_command
그런 다음 직접 호출하는 대신 새 bash 스크립트를 호출하면 됩니다.