Пояснение: я хочу, чтобы __foo
выполнялся каждый раз, когда строка PS1 представлена в терминале, а не когда строка PS1 создается (следовательно, она в кавычках). __foo
содержит логику, которая проверяет текущий каталог, поэтому его выполнение должно быть отложено.
Я пытаюсь использовать разные цвета в моей строке Bash PS1 из функции Bash:
LIGHTRED="\033[1;31m"
LIGHTGREEN="\033[1;32m"
RESET="\033[m"
__foo () {
# Do some stuff and genereate a string to echo in different colours:
echo -n '\['$1'\]firstcolour \['$2'\]secondcolour'
}
PS1='$(__foo '$LIGHTRED' '$LIGHTGREEN')\['$RESET'\] \$'
По сути, я хочу, чтобы __foo
генерировал часть PS1 в связке разных цветов. Моя попытка, похоже, не работает, хотя; он производит следующий вывод:
-bash: 31m: command not found
-bash: 32m: command not found
\[]firstcolour \[\]secondcolour $
Что дает, и как я могу это исправить?