Как получить строку на iMac из файла / etc / profile красного цвета при входе в систему от имени root

#bash

#bash

Вопрос:

У меня есть назначение на iMac / etc / profile, добавьте строку ниже

 RED='33[0;31m'    
if [ $USER == "root" ]; then    
    echo x1B "33Danger!! root is doing stuff in w[0;31m"    
fi    
  

Я должен получить эту строку красного цвета при входе в систему от имени root, но у меня ничего нет. Должен ли я сделать это по-другому или в другом файле?

Комментарии:

1. Вы используете w в выводе; это должно отображаться в приглашении?

2. Это будет очень раздражать. Не помещайте интерактивные материалы в файлы, которые также выполняются задачами автоматизации.

Ответ №1:

Чтобы получить красный цвет, вам нужно использовать:

 printf '%b' "33[31;1mDanger33[0mn"
  

Это должно сработать:

 if [ "$USER" = "root" ]; then 
    printf '%b' "33[31;1mDanger! root is doing stuff in33[0mn"
fi    
  

Спасибо Chepner за информацию и помощь в том, чтобы сделать этот ответ совместимым с POSIX.

Комментарии:

1. Однако не вводите bash специфичный для /etc/profile синтаксис.

2. Отлично работает. Где я могу найти таблицу цветов для baSH?

3. @chepner возможно, вы могли бы опубликовать ответ, объясняющий, почему использование синтаксиса, специфичного для bash, в /etc/profile является плохой идеей.

4. /etc/profile используется оболочками, отличными от bash , оболочек, которые не поймут $'...' и просто завершат работу с ошибкой при ее обнаружении.

5. Да: вы выступаете за размещение кода, не совместимого с POSIX, в файле конфигурации оболочки POSIX.