Comment VARIABLE = () {function definition} fonctionne dans bash

J'ai vu quelque chose comme ça dans mon bash ENV:

module=() { eval `/usr/bin/modulecmd bash $*` } 

Comment cela fonctionne-t-il? Comment appelle-t-on ceci?

Je ne pose pas de questions sur modulecmd, je pose des questions sur l'set de la construction.

C'est vraiment une fonction nommée module . Il apparaît dans les variables d'environnement lorsque vous exportez une fonction.

 $ test() { echo test; } $ export -f test $ env | sed -n '/test/{N;p}' test=() { echo test } 

De bash documentation – export :

export

  export [-fn] [-p] [name[=value]] 

Marquez chaque nom à transmettre aux process enfants dans l'environnement. Si l'option -f est fournie, les noms font reference aux fonctions du shell ; sinon, les noms font reference à des variables de shell. L'option -n signifie ne plus marquer chaque nom pour l'export. Si aucun nom n'est fourni ou si l'option -p est donnée, une list de noms exportés s'affiche. L'option -p affiche la sortie sous une forme qui peut être réutilisée en input. Si un nom de variable est suivi de = value, la valeur de la variable est définie sur value.

L'état de return est zéro sauf si une option non valide est fournie, l'un des noms n'est pas un nom de variable de shell valide ou -f est fourni avec un nom qui n'est pas une fonction de shell.