Para entender o eval
snippet eval "$(SHELL=/bin/sh lesspipe)"
, precisamos dividi-lo:
-
Primeiro, vamos verificar o que
SHELL=/bin/sh lesspipe
retorna:$ 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
export
para 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
eval
agora, entãoeval
apenas executará os dois comandos retornados pela substituição de comandos:eval "$(SHELL=/bin/sh lesspipe)"
depois disso, as variáveis
LESSOPEN
eLESSCLOSE
serão variáveis de ambiente para o shell no qual este comando está sendo executado.