Para entender o eval snippet eval "$(SHELL=/bin/sh lesspipe)" , precisamos dividi-lo:
-
Primeiro, vamos verificar o que
SHELL=/bin/sh lesspiperetorna:$ SHELL=/bin/sh lesspipe export LESSOPEN="| /usr/bin/lesspipe %s"; export LESSCLOSE="/usr/bin/lesspipe %s %s";Como você pode ver, ele retorna dois comandos contendo declarações de variáveis precedidas por
exportpara torná-los variáveis de ambiente. -
Agora outra coisa,
$()é a sintaxe de substituição de comando que retorna exatamente o que vimos acima, ou seja, a saída de um comando, vamos verificar:$ echo "$(SHELL=/bin/sh lesspipe)" export LESSOPEN="| /usr/bin/lesspipe %s"; export LESSCLOSE="/usr/bin/lesspipe %s %s"; -
Ok, e quanto a
evalagora, entãoevalapenas executará os dois comandos retornados pela substituição de comandos:eval "$(SHELL=/bin/sh lesspipe)"depois disso, as variáveis
LESSOPENeLESSCLOSEserão variáveis de ambiente para o shell no qual este comando está sendo executado.