이 파일 tmp.sh
에는 다음이 포함됩니다.
func() {
ls
}
source tmp.sh
이 기능 은 func
.
그러나 구매가 cat tmp.sh | source /dev/stdin
bash 불만으로 이루어진 경우:
-bash: func3: 명령을 찾을 수 없습니다.
이 두 가지 구매 방법의 차이점은 무엇입니까? source
관점 에서는 /dev/stdin
파일 핸들이기도 하므로 차이가 없어야 합니다.
답변1
Bash(1)에서:파이프라인의 각 명령은 별도의 프로세스(즉, 하위 셸에서)로 실행됩니다.
기본 셸은 해당 하위 셸의 정의에 액세스할 수 없습니다.