El archivo tmp.sh
contiene:
func() {
ls
}
Si el archivo se obtiene mediante source tmp.sh
, la función func
funciona bien.
Sin embargo, si el abastecimiento se realiza como cat tmp.sh | source /dev/stdin
quejas bash:
-bash: func3: comando no encontrado
¿Cuál es la diferencia entre los dos métodos de abastecimiento? Desde source
la perspectiva de no debería haber ninguna diferencia ya que /dev/stdin
también sería un identificador de archivo.
Respuesta1
Desde fiesta (1):Cada comando en una canalización se ejecuta como un proceso separado (es decir, en una subcapa).
El shell principal no tiene acceso a las definiciones de sus subshells.