파일 tmp.sh
에는 다음이 포함됩니다.
func() {
ls
}
파일이 를 사용하여 소스로 제공되면 source tmp.sh
기능이 func
제대로 작동합니다.
그러나 소싱이 cat tmp.sh | source /dev/stdin
bash 불만으로 수행되는 경우:
-bash: func3: 명령을 찾을 수 없습니다.
두 가지 소싱 방법의 차이점은 무엇입니까? 의 관점 에서는 파일 핸들도 되기 source
때문에 아무런 차이가 없어야 합니다 ./dev/stdin
답변1
Bash(1)에서:파이프라인의 각 명령은 별도의 프로세스(즉, 서브셸에서)로 실행됩니다.
기본 셸은 하위 셸의 정의에 액세스할 수 없습니다.