Como o VARIABLE = () {function definition} funciona no bash

7

WARNING - this question is about the Bash before the vulnerability, due to which it was changed.

Eu já vi algo assim no meu bash ENV:

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

Como essa construção funciona? Como é chamado?

Não estou perguntando sobre o modulecmd, estou perguntando sobre todo o construto.

    
por mcede 29.08.2014 / 18:06

1 resposta

10

É realmente uma função chamada module . Aparece nas variáveis de ambiente quando você exporta uma função.

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

Em documentação do bash - export :

export

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

Mark each name to be passed to child processes in the environment. If the -f option is supplied, the names refer to shell functions; otherwise the names refer to shell variables. The -n option means to no longer mark each name for export. If no names are supplied, or if the -p option is given, a list of exported names is displayed. The -p option displays output in a form that may be reused as input. If a variable name is followed by =value, the value of the variable is set to value.

The return status is zero unless an invalid option is supplied, one of the names is not a valid shell variable name, or -f is supplied with a name that is not a shell function.

    
por 29.08.2014 / 18:30

Tags