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