#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.