이 소스 설명이 작동하지 않는 이유는 무엇입니까?

이 소스 설명이 작동하지 않는 이유는 무엇입니까?

파일 tmp.sh에는 다음이 포함됩니다.

func() {
   ls
}

파일이 를 사용하여 소스로 제공되면 source tmp.sh기능이 func제대로 작동합니다.

그러나 소싱이 cat tmp.sh | source /dev/stdinbash 불만으로 수행되는 경우:

-bash: func3: 명령을 찾을 수 없습니다.

두 가지 소싱 방법의 차이점은 무엇입니까? 의 관점 에서는 파일 핸들도 되기 source때문에 아무런 차이가 없어야 합니다 ./dev/stdin

답변1

Bash(1)에서:파이프라인의 각 명령은 별도의 프로세스(즉, 서브셸에서)로 실행됩니다.

기본 셸은 하위 셸의 정의에 액세스할 수 없습니다.

관련 정보