Por que essa instrução de origem não funciona?

1

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.

    
por Kshitiz Sharma 27.10.2016 / 15:47

1 resposta

6

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.

    
por 27.10.2016 / 15:54