bash为PS1的文字值解析变量

时间:2013-04-16 04:39:56

标签: bash literals ps1

注意:不要为该示例案例提供更简单的解决方案,它只是为了显示问题而生成,订单来自真实的problem

我尝试在“.bashrc”中更改我的PS1,不想在这里打印整个代码(但是在定义内部变量之前确实需要在文字中存储模板),问题总结为:

PROMPT_START='$PathShort'
PathShort="\w"
PS1="$PROMPT_START$"

结果我有:

\w$

但我希望:

~/java/git/shell$

但是如果让PS1像:

PS1="\w$"

结果将符合预期:

~/java/git/shell$

如何使用推迟变量($ PathShort)解析我的(第一个)变体PS1?

注意:我无法更改该变量的顺序,此问题是此problem

的结果

2 个答案:

答案 0 :(得分:0)

目前尚不清楚,你想在PS1中使用\w$吗?然后使用PS1="\\\w$"。当bash读取字符串时,它会将\作为转义字符读取。因此,您需要通过在其前面放置另一个转义字符来提供文字\。读这个,很有趣:) http://en.wikipedia.org/wiki/Leaning_toothpick_syndrome

答案 1 :(得分:0)

<强> .profile中:

function prompt() {
   print $PathShort
}
export -f prompt
PS1='`prompt`$ '

<强>结果:

alevin $ . .profile
$ export PathShort=one
one$ export PathShort=two
two$ export PathShort=three
three$