.bash_profile语法错误:意外的文件结尾。

4

操作系统:macOS Sierra v10.12.2

我试图从命令行运行R,但遇到了问题,可能是因为我对编程相对较新,并且搞错了一些东西。

打开新终端后:

-bash: /Users/Brad/.bash_profile: line 33: syntax error: unexpected end of file

当我检查个人资料时,它看起来像这样:
# Setting PATH for Python 2.7
# The orginal version is saved in .bash_profile.pysave
PATH="/Library/Frameworks/Python.framework/Versions/2.7/bin:${PATH}"
export PATH

# Setting PATH for Python 3.5
# The original version is saved in .bash_profile.pysave
PATH="/Library/Frameworks/Python.framework/Versions/3.5/bin:${PATH}"
export PATH

export PATH="$HOME/.bin:$PATH"

eval "$(hub alias -s)"

  prompt_ruby_info() {
    if [ -f ".ruby-version" ]; then
      cat .ruby-version
    fi
  }

GREEN=$(tput setaf 65)

ORANGE=$(tput setaf 166)

NORMAL=$(tput sgr0)

precmd () { PS1="${ORANGE}[%~] ${GREEN}$(prompt_ruby_info) ${NORMAL}$ " }

export CLICOLOR=1;

export LSCOLORS=Gxfxcxdxbxegedabagacad;

任何关于如何解决这个问题的信息都将不胜感激;我不想继续摸索并使情况变得更糟!谢谢!

2
shellcheck.net上发布您的代码将会显示语法错误。在precmd函数的结束}之前添加;应该可以解决您的问题。如果结束}与命令在同一行,则命令必须始终以;结尾。 - mklement0
2个回答

7
这一行:

precmd () { PS1="${ORANGE}[%~] ${GREEN}$(prompt_ruby_info) ${NORMAL}$ " }

缺少结尾的分号:
precmd () { PS1="${ORANGE}[%~] ${GREEN}$(prompt_ruby_info) ${NORMAL}$ " ; }

Bash参考手册中提到:

{ list; }

在花括号内放置命令列表将导致该列表在当前shell上下文中执行。不会创建子shell。需要分号(或换行符)。

这意味着你也可以这样写:

precmd ()
{
  PS1="${ORANGE}[%~] ${GREEN}$(prompt_ruby_info) ${NORMAL}$ "
}

1

您在第27行缺少分号 (;):

precmd () { PS1="${ORANGE}[%~] ${GREEN}$(prompt_ruby_info) ${NORMAL}$ "; }

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接