#bash #gsutil
#bash #gsutil
Вопрос:
На компьютере с Linux я пытаюсь установить gsutil, следуя инструкциям на https://cloud.google.com/storage/docs/gsutil_install . Во время установки я ответил «да» на все и оставил значения по умолчанию.
Однако теперь, если я открываю новый терминал, он начинается с ошибки 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
s не совпадают ни if
с одним . Я мог бы просто прокомментировать последние три строки, но я не уверен, что это нарушит функциональность. Любой совет?
Комментарии:
1. Почему последние 3 строки висят без какой-либо логики?
2. Это меня тоже озадачивает. Маловероятно, что 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
Похоже, что в установщике есть ошибка, которая сгенерировала эти строки. На всякий случай я бы повторно загрузил пакет и снова запустил программу установки.