O que está sendo avaliado aqui não é eval
. A palavra eval
no seu script é completamente inerte. Você notará que aparece na saída, afinal.
O que está sendo avaliado é a substituição de comando (a parte nos backticks). Para incluir os backticks literais no texto que é gravado no arquivo, proteja-os com barras invertidas:
cat >> ~/.bashrc << __EOF__
# Customize directory listing colors.
eval \'dircolors ~/.dircolors\'
export LS_COLORS
__EOF__
Como alternativa, torne o documento here um literal, ou seja, um que tome o texto como está, em vez de executar a substituição de variáveis e comandos. Você faz isso citando qualquer parte do marcador final após o operador <<
.
cat >> ~/.bashrc <<\__EOF__
# Customize directory listing colors.
eval 'dircolors ~/.dircolors'
export LS_COLORS
__EOF__