Do bash (1): Cada comando em um pipeline é executado como um processo separado (ou seja, em um subshell).
O shell principal não tem acesso às definições de suas subpastas.
O arquivo tmp.sh contém:
func() {
ls
}
Se o arquivo é originado usando source tmp.sh , a função func funciona bem.
No entanto, se o fornecimento for feito como cat tmp.sh | source /dev/stdin reclamações:
-bash: func3: command not found
Qual é a diferença entre os dois métodos de terceirização? Do ponto de vista de source , não deve haver qualquer diferença, pois /dev/stdin também seria um identificador de arquivo.
Tags bash pipe shell-script