安装gsutil后.bashrc中的语法错误

时间:2016-10-05 07:44:11

标签: bash gsutil

在Linux机器上,我正按照https://cloud.google.com/storage/docs/gsutil_install上的说明尝试安装gsutil。在安装过程中,我对所有内容回答“是”,并将其保留为默认值。

现在,如果我打开一个新的终端,它会以bash错误开始:

bash: /home/kurt/.bashrc: line 119: syntax error near unexpected token `fi'
bash: /home/kurt/.bashrc: line 119: `fi'
kurt@kurt-ThinkPad:~$

违规行包含在我的.bashrc文件的以下片段中:

# enable programmable completion features (you don't need to enable
# this, if it's already enabled in /etc/bash.bashrc and /etc/profile
# sources /etc/bash.bashrc).
if ! 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
  source '/home/kurt/Downloads/google-cloud-sdk/path.bash.inc'
fi
  source '/home/kurt/Downloads/google-cloud-sdk/completion.bash.inc'
fi

错误发生在倒数第二个fi语句中。实际上,看起来最后两个fi与任何if都不匹配。我可以只注释掉最后三行,但我不确定这是否会破坏功能。有什么建议吗?

1 个答案:

答案 0 :(得分:1)

通过查看您的.bashrc代码段,您不会通过删除最后两个fi关键字来破坏任何功能。可能在文件前面有一个相应的if关键字,但是前面的块的缩进和内容(配置bash完成),我对此表示怀疑。

我猜想在尝试source之前,缺少的行正在检查这两个文件是否存在(并且是可读的):

if [ -r '/home/kurt/Downloads/google-cloud-sdk/path.bash.inc' ]; then
  source '/home/kurt/Downloads/google-cloud-sdk/path.bash.inc'
fi

if [ -r '/home/kurt/Downloads/google-cloud-sdk/completion.bash.inc' ]; then
  source '/home/kurt/Downloads/google-cloud-sdk/completion.bash.inc'
fi

看起来安装程序中存在生成这些行的错误。为了安全起见,我会重新下载软件包并再次运行安装程序。