A nomenclatura de funções é bastante semelhante aos caracteres permitidos para o alias:
De man bash
:
The characters /, $, ', and = and any of the shell metacharacters or quoting characters listed above may not appear in an alias name.
metacharacter
One of the following: | & ; ( ) < > space tab
Então, exceto: / $ '= | & ; () < > guia de espaço
qualquer outro caractere deve ser válido para nomes de alias e funções.
No entanto, o caractere @
também é usado para @(pattern-list)
quando o extglob está ativo. Por padrão, o extglob está ativo em shells interativos.
Então, isso deve falhar:
$ @(){ echo "hello"; }
bash: syntax error near unexpected token '}'
No entanto, isso funciona:
$ bash -c '@(){ echo "hello"; }; @'
hello
E isso também deve funcionar:
$ shopt -u extglob ### keep this as an independent line.
$ @(){ echo "hello"; }
$ @
hello
Também é possível fazer isso:
$ f(){ echo "yes"; }
$ alias @=f
$ @
yes
Um alias é flexível em quais símbolos ele aceita.