在 Windows 上为 Git Bash 设置 .bashrc 时,为什么 PS1 中的函数显示函数名称而不是评估? 编辑:编辑 2:

问题描述

以下是我当前在位于主目录中的 .bashrc 文件中的内容

parse_git_branch() {
     git branch 2> /dev/null | sed -e '/^[^*]/d' -e 's/* \(.*\)/ (\1)/';
}

PS1='\n'                                        # New line
PS1=$PS1'\[\033[01;32m\]\u'                     # Username
PS1=$PS1' \[\033[00m\]at \[\033[01;35m\]\h'     # at Hostname
PS1=$PS1' \[\033[00m\]in \[\033[01;36m\]\W'     # in Directory
PS1=$PS1'\[\033[01;33m\]\$(parse_git_branch)'   # Git branch
PS1=$PS1'\[\033[00m\]\n\$ '                     # New line and prompt

export PS1

这个 bash 提示应该是

user at host in ~ (main)
$ 

在我的主目录中 git 存储库的主分支上时。相反,bash 提示

user at host in ~$(parse_git_branch)
$

PS1 定义中的函数只是在提示显示为文本,而不是被评估。

有人知道为什么会发生这种情况吗?

编辑:

调用函数的行更改为使用双引号并删除调用前的斜杠时,如下所示,

PS1=$PS1"\[\033[01;33m\]$(parse_git_branch)"

git 分支在第一次打开 bash 时正确显示但没有更新。如果我将调用函数的行更改为仍然使用双引号但包含斜杠或使用单引号而不使用斜杠,如下所示,

PS1=$PS1"\[\033[01;33m\]\$(parse_git_branch)"
PS1=$PS1'\[\033[01;33m\]$(parse_git_branch)'

我在打开 bash 时出现以下错误

$ bash
bash: command substitution: line 1: Syntax error near unexpected token `)'
bash: command substitution: line 1: `parse_git_branch)'

编辑 2:

问题已通过将调用函数的行更改为

解决
PS1=$PS1'\[\033[01;31m\]`parse_git_branch`'

如图所示here

解决方法

暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!

如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。

小编邮箱:dio#foxmail.com (将#修改为@)

相关问答

Selenium Web驱动程序和Java。元素在(x,y)点处不可单击。其...
Python-如何使用点“。” 访问字典成员?
Java 字符串是不可变的。到底是什么意思?
Java中的“ final”关键字如何工作?(我仍然可以修改对象。...
“loop:”在Java代码中。这是什么,为什么要编译?
java.lang.ClassNotFoundException:sun.jdbc.odbc.JdbcOdbc...