Welcome to OGeek Q&A Community for programmer and developer-Open, Learning and Share
Welcome To Ask or Share your Answers For Others

Categories

0 votes
796 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 Reply

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

与恶龙缠斗过久,自身亦成为恶龙;凝视深渊过久,深渊将回以凝视…
OGeek|极客中国-欢迎来到极客的世界,一个免费开放的程序员编程交流平台!开放,进步,分享!让技术改变生活,让极客改变未来! Welcome to OGeek Q&A Community for programmer and developer-Open, Learning and Share
Click Here to Ask a Question

...