IQAndreas
IQAndreas

Reputation: 8468

Unable to add escape sequences dynamically for 'PS1'

Say I want to include an escape sequence dynamically:

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

The problem is, instead of filling in the user name, my prompt looks like this:

\u@ubuntu-1$ 

Even if I escape the backslash (user="\\u") it still does not print out the user name. How do I get the prompt to look like this:

andreas@ubuntu-1$ 

Upvotes: 0

Views: 265

Answers (1)

merlin2011
merlin2011

Reputation: 75565

Use double quotes when you are trying to interpolate variables and want them to expand.

You also have another option, instead of dealing with \u and complications with when the interpretation of it happens.

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

Upvotes: 1

Related Questions