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

10

我遇到了一个意外的文件末尾错误,但我不太确定如何解决它。

# Source global definitions
if [ -f /etc/bashrc ]; then
        . /etc/bashrc
fi

# User specific aliases and functions

export PS1='\[\e[0;32m\]\u\[\e[m\] \[\e[1;34m\]\w\[\e[m\] \[\e[1;32m\]\$\[\e[m\] \[\e[1;37m\]'

export LS_COLORS='di=35;1'


alias la='ls -lah'
alias cdu='cd /home/hzhang/primary'

#module load gnu-compilers/4.7.0
#module load mvapich3/gnu/1.7

.ls /opt/intel/Compiler/11.1/072/bin/ifortvars.sh intel64

#PATH=$PATH:/home/hzhang/primary/over2.2e/bin_dp:/home/hzhang/primary/foiltest
PATH=$PATH:/opt/overflow/intel/serial/bin_dp/:/home/hzhang/primary/chimera2.1/bin_dp/:/u/primary/hzhang/pegasus/bin_dp
export PATH

ulimit -s unlimited 

2
那个文件里似乎没有什么明显的问题,但是.ls看起来有点奇怪。请检查/etc/bashrc - geirha
1
假设问题中的.ls只是一个打字错误,请检查.../ifortvars.sh。如果PATH元素包含一些特殊字符(如括号),您可能需要用双引号括起来。 - fork0
正如@tooboring4me所提到的,检查所有行(包括最后一行)是否以\n结尾。 - mnagel
1
// .bashrc 加载了其他几个文件,例如 .bash_aliases。在这里检查一个由编辑另一个文件修复的此错误的示例:http://stackoverflow.com/questions/31211571/bashrc-error-bash-home-jason-bashrc-line-115-syntax-error-unexpected-end - Nathan Basanese
9个回答

20

由于缺少 "fi" 行,我遇到了相同的错误。确保省略语法错误。 原始的 .bashrc 位于 /etc/skel/。所以只需运行以下命令:

cp /etc/skel/.bashrc ~


11

我曾面临类似的问题。在使用 Windows 10 自带的 bash 时,一些文件的行结束符被更改为了 Windows 的换行符(CRLF)。将文件改回使用 Unix 的行结束符即可解决此问题。

尝试将行结束符转换为 Unix 的行结束符,看看是否解决了问题。如果在 Vim 中编辑,请输入命令 :set fileformat=unix 并保存文件。其他一些编辑器也有转换行结束符的功能,例如Notepad++Atom


1
谢谢你在这方面的帮助。它对我有用。我已经将你的答案转发到https://dev59.com/eWw15IYBdhLWcg3w1vSB#49226909。希望你不介意。 - Jay Killeen
1
这对我来说是解决方案。非常好的观察和建议。 - Paul

4
这样的语法错误很容易找到。乍一看,文件看起来没问题,因此建议您用#注释掉每一行代码,并查看错误是否仍然存在。
然后进行二分查找,即注释掉文件前半部分,如果这样可以解决问题,再继续处理第三个四分之一的文件(否则处理前一个四分之一)。以此类推。

1
我遇到了类似的问题,结果发现函数结尾缺少了一个“}”。我备份了有问题的函数(以便了解我的设置),然后复制了原始文件(cp /etc/skel/.bashrc ~),再次添加了这些行。

1

我也遇到了同样的问题,因为我在我的.bashcr文件中做了一些更改,导致终端出现了问题。执行以下命令解决了我的问题:

ecp /etc/skel/.bashrc ~

0
感谢提供这个话题。
不必将整个文件注释掉或复制并恢复,你可以使用diff命令进行比较。
$ diff .bashrc /etc/skel/.bashrc

如果是一些简单的东西,你很快就会看到。
我刚刚遇到了同样的问题。我注释掉了一个fi,但没有注意到。

0
这个 .bashrc 文件应该是从 Windows 编辑过来的。 需要使用 fromdos 命令来纠正文件格式,以便能够正确地引用它。

你能提供更详细的信息吗?因为只有少数人能理解这个... - NREZ

-1

只需在终端中打开文件,使用命令gedit .bashrc。文档将会打开,滚动到底部查看是否缺少fi,如果没有,请添加它。只需在最后一个命令的左边缘放置"fi",并用"fi"关闭所有命令。在这里查看


-3

如果 ! shopt -oq posix; then if [ -f /usr/share/bash-completion/bash_completion ]; then . /usr/share/bash-completion/bash_completion elif [ -f /etc/bash_completion ]; then . /etc/bash_completion fi Fi 在我的终端第一行中,我得到了/.bashrc 文件的结尾处有错误,但是当我将Fi更改为fi时,它能够正常工作,就像这样:

如果 ! shopt -oq posix; then if [ -f /usr/share/bash-completion/bash_completion ]; then . /usr/share/bash-completion/bash_completion elif [ -f /etc/bash_completion ]; then . /etc/bash_completion fi fi


请将代码放入代码块中,这样可以提高可读性。 - akalanka

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