Невозможно динамически добавить escape-последовательности для "PS1"

Скажем, я хочу включить escape-последовательность динамически:

if [ -n $something ]; then
    user="\u"
else
    user="admin"
fi
PS1='$user@\h$ '

Проблема в том, что вместо ввода имени пользователя моя подсказка выглядит так:

\u@ubuntu-1$ 

Даже если я уйду от обратной косой черты (user="\\u") он все еще не распечатывает имя пользователя. Как мне получить приглашение выглядеть так:

andreas@ubuntu-1$ 

1 ответ

Решение

Используйте двойные кавычки, когда вы пытаетесь интерполировать переменные и хотите, чтобы они расширялись.

У вас также есть другой вариант, вместо того, чтобы иметь дело с \u и осложнения, когда интерпретация этого происходит.

if [ -n $something ]; then
    user=`whoami`
else
    user="admin"
fi
PS1="$user@\h$ "
Другие вопросы по тегам