Если бы я делал это, я бы начал с PROMPT_COMMAND . Bash запустит этот скрипт непосредственно перед отображением приглашения.
У вас есть несколько вариантов. Вы можете иметь скрипт внутри PROMPT_COMMAND:
PROMPT_COMMAND='if [ is_morning ]; then echo "MORNING_COLORS'; else echo "EVENING_COLORS"; fi
Или вы можете заставить PROMPT_COMMAND выполнить внешнюю команду (которая также может быть скриптом bash или вы можете использовать другой язык, если хотите), чтобы выполнить всю работу там:
PROMPT_COMMAND=/path/to/setcolor_timeofday
Единственная дыра, которую я вижу в этом, заключается в том, что если у вас есть программа, работающая при изменении времени (например, с помощью tail -f
для просмотра файла), фон не изменится, пока вы не вернетесь в приглашение bash .