Linux 쉘 스크립트에서 소스를 재정의하는 방법은 무엇입니까?

Linux 쉘 스크립트에서 소스를 재정의하는 방법은 무엇입니까?

우리 팀은 셸 스크립트를 공유합니다. 나만 Windows를 사용하므로 Cygwin과 호환되도록 만들고 싶습니다. 이제 문제는 에서 발생합니다 source. 내 쉘은 다음과 같은 형식만 허용합니다.

source ./<file name>

대신에

source <file name>

이미 스크립트에 있습니다. 그래서 다음과 같이 재정의하고 싶습니다 source.

source(){ . ./$@; }

하지만 이제 내 쉘은 다음과 같이 불평합니다.

`source': is a special builtin

지금은 무엇을 해야 합니까?

답변1

특수 내장에 대한 오류 메시지에서(참조:http://sources.debian.net/src/bash/4.4-4/execute_cmd.c/?hl=5623#L5623), POSIX 모드에서 bash를 실행 중인 것으로 보입니다. 이는 , 사용 등 $POSIXLY_CORRECT으로 쉘을 설정하고 실행했기 때문일 수 있습니다 .--posixset -o posix

POSIX 모드가 수행하는 많은 작업 중 하나는 ( 재정의할 수 없는 것 외에도 source) -lookup이 실패할 경우 현재 작업 디렉터리를 검색하지 않는 것 source입니다 ..$PATH

이것은 Cygwin에서 실행하는 것과 아무 관련이 없습니다.

관련 정보