相关疑难解决方法(0)

为什么我的功能没有在 PS1 中重新评估?

我正在尝试通过函数动态设置我的提示的一部分,所以在我的.bashrc我有:

asdf ()
{
    echo -n $(pwd)
}
PS1="\u@\h:\w $(asdf)\$ "
Run Code Online (Sandbox Code Playgroud)

打开一个 shell 给了我我最初的期望:

$ bash
darthbith@server:~/test /home/darthbith/test$
Run Code Online (Sandbox Code Playgroud)

但是,当我更改目录时,函数定义的部分不会改变:

darthbith@server:~/test /home/darthbith/test$ cd ~/test2
darthbith@server:~/test2 /home/darthbith/test$
Run Code Online (Sandbox Code Playgroud)

我的实际目标是当我使用漂亮的颜色和所有内容时,使用git-prompt.sh脚本来显示我的 git 存储库的分支,但问题是当我更改存储库时它永远不会更新分支名称。上面这个简单的例子是我可以为我的问题想出的最简单的复制品。

.bashrc我有整合的git-提示台词:

source ~/.git-prompt.sh
PS1="\[\033[01;32m\]\u@\h\[\033[00m\]:\[\033[01;34m\]\w\[\033[00m\]$(__git_ps1)\$ "
Run Code Online (Sandbox Code Playgroud)

command-line bash prompt bashrc ps1

23
推荐指数
2
解决办法
6426
查看次数

在 bash 中显示 git branch 的脚本不再适用于 ubuntu 18.04

在我的 16.04 安装中,我把它放在我的~/.bashrc文件中:

#Show git branch in commandline
parse_git_branch() {
     git branch 2> /dev/null | sed -e '/^[^*]/d' -e 's/* \(.*\)/ (\1)/'
}
export PS1="${debian_chroot:+($debian_chroot)}\[\033[01;32m\]\u:\[\033[01;34m\]\w\[\033[00m\]\$(parse_git_branch)\[\033[00m\] $ "
Run Code Online (Sandbox Code Playgroud)

它显示了这样的提示:

user:~/myrepo (master) $
Run Code Online (Sandbox Code Playgroud)

但是当我在 18.04 上做同样的事情时,提示看起来像这样:

user:~/myrepo $ 
Run Code Online (Sandbox Code Playgroud)

我如何让它在 18.04 中工作?

$ printf "%q\n" "$PS1" "$PROMPT_COMMAND" "$0" "$SHELL"
\\\[\\033\[01\;32m\\\]\\u:\\\[\\033\[01\;34m\\\]\\w\\\[\\033\[00m\\\]\$\(parse_git_branch\)\\\[\\033\[00m\\\]\ \$\ 
''
bash
/bin/bash
Run Code Online (Sandbox Code Playgroud)

我正在使用sed (GNU sed) 4.4GNU bash, version 4.4.19(1)-release (x86_64-pc-linux-gnu)。这是一个“全新”安装,因此.bashrc.

bash prompt git bashrc

6
推荐指数
2
解决办法
6081
查看次数

标签 统计

bash ×2

bashrc ×2

prompt ×2

command-line ×1

git ×1

ps1 ×1