2016-10-05 2 views
0

На машине Linux я пытаюсь установить gsutil в соответствии с инструкциями на https://cloud.google.com/storage/docs/gsutil_install. Во время установки я ответил «да» на все и оставил вещи по умолчанию.Ошибка синтаксиса в .bashrc после установки gsutil

Теперь, однако, если открыть новый терминал начинается с ошибкой Баша:

bash: /home/kurt/.bashrc: line 119: syntax error near unexpected token `fi' 
bash: /home/kurt/.bashrc: line 119: `fi' 
[email protected]:~$ 

Нарушитель линия содержится в следующем фрагменте моего .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 s не соответствуют никаким if. Я мог бы просто прокомментировать последние три строки, но я не уверен, что это нарушит функциональность. Любой совет?

+0

Почему последние 3 линии висят без какой-либо логики? – Inian

+0

Это меня озадачивает. Казалось бы маловероятным, чтобы Google отправил код с синтаксическими ошибками в нем, но эти строки, похоже, были добавлены программой установки. –

ответ

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 

Похоже, есть ошибка в программе установки, создавших тех линий. Чтобы быть в безопасности, я бы снова загрузил пакет и снова запустил установщик.

Смежные вопросы