Welcome to OStack Knowledge Sharing Community for programmer and developer-Open, Learning and Share
Welcome To Ask or Share your Answers For Others

Categories

0 votes
792 views
in Technique[技术] by (71.8m points)

bash - 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$ 
See Question&Answers more detail:os

与恶龙缠斗过久,自身亦成为恶龙;凝视深渊过久,深渊将回以凝视…
Welcome To Ask or Share your Answers For Others

1 Answer

0 votes
by (71.8m points)

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$ "

与恶龙缠斗过久,自身亦成为恶龙;凝视深渊过久,深渊将回以凝视…
Welcome to OStack Knowledge Sharing Community for programmer and developer-Open, Learning and Share
Click Here to Ask a Question

2.1m questions

2.1m answers

60 comments

57.0k users

...