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에서 실행하는 것과 아무 관련이 없습니다.

관련 정보