Debian .bashrc:提示PS1

时间:2017-05-04 08:19:34

标签: bash shell

让我们说我正在全新安装Debian,Jessie(或Wheezy)。作为普通用户,我已在/etc/bash.bashrc文件中定义了提示,最终会被我/home/foobar/.bashrc中的提示覆盖

好的,很酷,所以我有类似的东西:foobar@myserver:~$ 现在,我试图理解下面的代码:

# If this is an xterm set the title to user@host:dir
case "$TERM" in
xterm*|rxvt*)
    PS1="\[\e]0;${debian_chroot:+($debian_chroot)}\u@\h: \w\a\]$PS1"
    ;;
*)
    ;;
esac

正如你所看到的,PS1变量(=提示)似乎再次被覆盖(因为我在xterm中)。但我无法理解为什么我们在行尾有另一个$PS1

为了实现这一点,我在这一行中添加了3个字母a b c

PS1="a\[\e]0;${debian_chroot:+($debian_chroot)}\u@\h: \w\a\]b$PS1 c"

现在,我有一个奇怪的提示:

abfoobar@myserver:~$  c

所以似乎几乎整条生产线都没有用,所有这些都是在这些生产线之间。

  • 这是一种有条件的陈述吗?
  • 这条线的真正目的是什么?
  • 为什么评论谈论xterm窗口的标题,但似乎 只覆盖PS1?我通过PuTTY运行此xterm;在ubuntu中,这条线路完全不同 PROMPT_COMMAND='echo -ne "\033]0;${USER}@${HOSTNAME}: ${PWD}\007"'

1 个答案:

答案 0 :(得分:2)

\[ \]之间的部分似乎是一个转义序列,由终端ESC ]处理,在以下链接OSC中为操作系统命令命名OSC Ps ; Pt ST Set Text Parameters. For colors and font, if Pt is a "?", the control sequence elicits a response which consists of the con- trol sequence which would set the corresponding value. The dtterm control sequences allow you to determine the icon name and window title. Ps = 0 -> Change Icon Name and Window Title to Pt. 3}}

  <Router>
    <Scene key='root'>
      <Scene hideNavBar  key='home' component={ReactNativeTabViewContainer}
       tabs ={true} initial={true} />
    </Scene>
  </Router>

更改xterm窗口标题。

由于窗口标题包含当前工作目录设置,因此提示允许在cd命令后更改目录时更新标题。