¿Por qué cuando trato de escribir una función solo en una línea en el .bashrcarchivo,
list(){ ls -a }Me sale el error?
bash: /home/kasiya/.bashrc: line num: syntax error: unexpected end of filepero cuando lo escribo en varias líneas está bien?
list(){
    ls -a
}

Respuestas:
Las funciones en
bashse denominan esencialmente comandos compuestos (o bloques de código). Deman bash:No se da ninguna razón, es solo la sintaxis.
Dado que la lista en la función de una línea dada no termina con una nueva línea o una
;, sebashqueja.fuente
Hay una
;necesidad al final de la función:Deberia trabajar.
La sintaxis de una definición de función para bash se especifica como
Tenga en cuenta que incluye un
;que no forma parte delist.Que
;se requiera en este lugar es una especie de anomalía de sintaxis. No esbashespecífico, es lo mismoksh, pero no;es obligatoriozsh.fuente
El final de un solo comando (";") está implícito en la nueva línea. En la versión en línea
}se analiza como un argumento para ells -acomando no terminado . Lo que puedes ver si lo haces:¿Ves cómo el comando dentro de la declaración de función se traga la llave final?
fuente