提示前后换行(编辑已编辑的.bash_profile)

时间:2019-02-24 21:33:02

标签: bash shell

问题

我有一个.bash_profile,具有以下设置:

# Git configuration

## Branch name in prompt
source ~/.git-prompt.sh
PS1='[\W$(__git_ps1 " (%s)")]\$ '
export PROMPT_COMMAND='echo -ne "\033]0;${PWD/#$HOME/~}\007"'

这些设置输出以下提示:

[my-git-repo(master)]$ ls
index.html
[my-git-repo(master)]$ 

不错。您具有基本的工作目录(\W),分支指示-很好而且很小。但是,我希望提示符看起来像这样,因为对于我来说,视觉上解析大型输出更容易:

[my-git-repo(master)]$ ls

index.html

[my-git-repo(master)]$ 

我尝试过的解决方案

因此,为了实现这一点,我将.bash_profile更改为:

# Git configuration

## Branch name in prompt with newlines
source ~/.git-prompt.sh
PROMPT_COMMAND='PROMPT_COMMAND='\''PS1="\n[\W$(__git_ps1 " (%s)")]\$ "'\'
export PROMPT_COMMAND='echo -ne "\033]0;${PWD/#$HOME/~}\007"'

但是,新提示如下所示:

[my-git-repo]$ ls
index.html

[my-git-repo]$

如您所见,ls之后没有换行(我尝试合并它的尝试失败),index.html之后没有换行,并且分支指示(master)消失了。

如此接近,但我不确定自己在做什么错。感谢您的帮助!

1 个答案:

答案 0 :(得分:2)

您需要使用PS0(受bash 4.4或更高版本支持)在输入后添加空白行。您也可以简单地在PS1的开头添加换行符。

PS0='\n'
PS1='\n[\W$(__git_ps1 " (%s)")]\$ '

在4.4之前,您需要安装一个复杂的DEBUG陷阱以确保它仅在执行 first 受影响的命令之前添加换行符;我不会尝试正确地做到这一点。