微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

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

如何解决在 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.JdbcOdbcDriver发生异常。为什么?
这是用Java进行XML解析的最佳库。
Java的PriorityQueue的内置迭代器不会以任何特定顺序遍历数据结构。为什么?
如何在Java中聆听按键时移动图像。
Java“Program to an interface”。这是什么意思?