bash: 如何把提示符设成 $$

bash: 如何把提示符设成 $$

如果用 PS1='$$ ', 显示出来的是 shell 的 PID, 如果用 PS1='\$\$ ', 显示出来的是 ## (root 用户)       
想出一个不是很 elegant 的方法
复制内容到剪贴板
代码:
dollar='$'
PS1='$dollar$dollar '
      
复制内容到剪贴板
代码:
$$ id -u
0
$$ echo $PS1
\\$$
      
这是什么原理呢?      
诡异! 要把提示符设成 \\$$ 我们需要这样写:
复制内容到剪贴板
代码:
PS1='\\\\\\\\\\$$'
俺以为可以算是 bash 的 bug, 否则这样的用法能把人整晕       
引用:
yykkk@vm-ubuntu-server001:~$ echo $PS1
${debian_chroot:+($debian_chroot)}\u@\h:\w\$
yykkk@vm-ubuntu-server001:~$ $PS1 = '\$'
-bash: ${debian_chroot:+($debian_chroot)}\u@\h:\w\$: command not found
      
复制内容到剪贴板
代码:
$PS1 = '\$'
亮兄不会真打算执行这条命令吧      
引用:
原帖由 li-jiahuan 于 2007-10-1 23:08 发表

$PS1 = '\$'

亮兄不会真打算执行这条命令吧
有可能       
引用:
原帖由 dearvoid 于 2007-9-30 15:40 发表
诡异! 要把提示符设成 \\$$ 我们需要这样写:

PS1='\\\\\\\\\\$$'

俺以为可以算是 bash 的 bug, 否则这样的用法能把人整晕
忍不住给 bash 的邮件列表发了 mail, 有人说不是 bug
引用:
"Clark J. Wang" <****@gmail.com> writes:

> On 9/30/07, Andreas Schwab <schwab@suse.de> wrote:
>>
>> "Clark J. Wang" <****@gmail.com> writes:
>>
>> > Anybody has any idea?
>>
>> PS1='[\\$\\$=$$ \w] \$ '
>
>
> Sure it works but I don't think this is the way it should be. In this way,
> to include `\\' in the prompt we have to write like this:
>
> $ PS1='\\\\\\\\'
>
> It's really hard to read and understand. Isn't it a bug?

No.  There are two levels of expansion, each using the same quote
character (the backslash).  You can disable the second level with `shopt
-u promptvars', so that quote removal is not applied to the value.