У меня это в моем .bashrc:
LIGHTGREEN="\[\033[1;32m\]"
LIGHTRED="\[\033[1;31m\]"
WHITE="\[\033[0;37m\]"
RESET="\[\033[0;00m\]"
function error_test {
if [[ $? = "0" ]]; then
echo -e "$LIGHTGREEN"
else
echo -e "$LIGHTRED"
fi
}
PS1="\u\$(error_test)@\w$RESET \$ "
Это, похоже, делает вывод оболочки точно:
username\[\]@~/
В моем приглашении отображается экранирование [и] вокруг цветовых кодов. Если я удаляю escape-коды из цветов, которые он использует, но тогда bash обтекание строк происходит неудачно.
Обратите внимание, что если do PS1="LIGHTGREEN - whatever - $RESET"
работает, а [и] не сбрасываются. Тем не менее, я хочу сделать это внутри функции, которая, кажется, проблема.
Я не могу найти хорошую документацию по этому вопросу. man echo
даже не перечисляет параметр a -e. bash похоже, что у него много недокументированных знаний о handmedown.