bashrc文件 - "命令未找到"在定义打印当前Git分支的功能时

时间:2016-04-17 04:05:08

标签: git bash

当我将其保存到〜/ .bashrc 文件时,运行 source~ / .bashrc 时出错?谁知道我在这里做错了什么?

# Git branch in prompt.

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

ERROR

$ source  ~/.bashrc

: command not found
'bash: /Users/RGA/.bashrc: line 3: syntax error near unexpected token `{
'bash: /Users/RGA/.bashrc: line 3: `parse_git_branch () {

注意:〜/ .bash_profile 中唯一的内容是:
 来源〜/ .bashrc

更新包括BASH版本(OSX 10.9)

$ bash --version 

GNU bash, version 3.2.53(1)-release (x86_64-apple-darwin13)  
Copyright (C) 2007 Free Software Foundation, Inc.

1 个答案:

答案 0 :(得分:2)

错误输出存在可疑之处。让我们看看前两个错误,并考虑一下这样一个事实,即您的文件的第一行是注释:

: command not found

这可能是什么命令?这里没有命令名称。嗯...

'bash: /Users/RGA/.bashrc: line 3: syntax error near unexpected token `{

并且:为什么在该行的开头有一个结束单引号,然后在该行的末尾附近开一个单引号(后面),就在开放式大括号{之前?

如果前三行中的每一行都以一个绝大多数不可见的字符结束,当打印时,告诉计算机移回当前行的第一个位置会怎么样?让我们将这个假设的大多数不可见的字符表示为\r,它代表"隐形字符,它导致位置 - 返回到行首"。然后找不到的命令是这个不可见字符\r命令,并且发生语法错误,因为左括号{后跟\r

也许我们应该将此字符改为^M,其中M代表"运动到行的开头"。也许你的前三行

# Git branch in prompt.

parse_git_branch () {

而是:

# Git branch in prompt.^M
^M
parse_git_branch () {^M

也许你应该使用一个编辑器查看该文件,该编辑器不会隐藏在换行符\r之前发生的回车^M(又名\n)。

(如果您的编辑器是vim,您可以使用此设置,有些人可能称之为矫枉过正,但我​​喜欢这样:

set ffs=unix " disable "file format = dos" detection

或者您可以在文件打开后设置文件格式,以便vim不会在每行末尾重新添加^ M.如果您使用其他编辑器,请了解如何使其停止自动DOS样式的行结束。)