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

Syntax error in .bashrc after installing gsutil

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

但是现在,如果我打开一个新终端,它会以 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 都不匹配。我可以只注释掉最后三行,但我不确定这是否会破坏功能。有什么建议吗?

通过查看您的 .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

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