То, что здесь оценивается, не является eval
. Слово eval
в вашем сценарии совершенно инертно. Вы заметите, что оно все-таки появляется в выводе.
Что оценивается, так это подстановка команды (часть в обратных знаках). Чтобы включить литеральные обратные знаки в текст, записываемый в файл, защитите их обратными слэшами:
cat >> ~/.bashrc << __EOF__
# Customize directory listing colors.
eval \`dircolors ~/.dircolors\`
export LS_COLORS
__EOF__
Или же сделайте here-документ литеральным, то есть таким, который принимает текст как есть, а не выполняет подстановку переменных и команд. Для этого нужно заключить в кавычки любую часть маркера конца после оператора <<
.
cat >> ~/.bashrc <<\__EOF__
# Customize directory listing colors.
eval `dircolors ~/.dircolors`
export LS_COLORS
__EOF__