echoэто оболочка, встроенная в Bash и dash ( /bin/sh). Если вы запускаете echoиз командной строки, вы используете встроенную Bash, если вы запускаете свой скрипт оболочки, shвы используете встроенную Dash.
Dash-версия echoне знает -eопции, а просто выводит что-то дословно без какой-либо специальной обработки \последовательностей.
Либо используйте Bash для запуска сценария оболочки, либо используйте /bin/echoвместо echo:
/bin/echo -e "\e[1;31mThis is red text\e[0m"
Чтобы избежать проблем с разными версиями, echoвы можете использовать printfвместо этого. В отличие от этого, echo printfвсегда интерпретирует \последовательности, но не добавляет автоматически перевод строки в конце, поэтому вы должны добавить \nв конце, если хотите.
Поскольку некоторые версии printfне понимают, \eвы должны использовать \033вместо:
printf "\033[1;31mThis is red text\033[0m\n"
/bin/echoс тире (/bin/sh) и bash;echoс Bash или./tes.shоба работает правильно. Код ниже работаетbashтолько с. if [$ UID -ne 0]; затем echo "Не пользователь root", а echo "Root User" fi