Один из шагов для установки pyenv требует ввода в терминал следующего кода:
echo -e 'if command -v pyenv 1>/dev/null 2>&1; then\n eval "$(pyenv init -)"\nfi' >> ~/.bash_profile
Хотя я понимаю, что делают echo -e
и >> ./bash_profile
, я не оченьпонять, что происходит внутри кавычек.
После выполнения команды выше, мой bash_profile
теперь имеет следующее:
if command -v pyenv 1>/dev/null 2>&1; then
eval "$(pyenv init -)"
fi
Вопрос: Не могли бы выобъясните, что делает этот код?Правильна ли моя интерпретация происходящего (см. Ниже)?
Интерпретация:
command -v
берет имя команды и выводит ее описание, если данная команда не существует, ничего не выводится;таким образом command -v pyenv
выведет описание pyenv
, если оно доступно (что будет, если вы установили pyenv
), в противном случае ничего не будет отображаться 1>/dev/null
принимает вывод command -v pyenv
и выбрасывает его - Какова цель для
2>&1
? - Зачем нам нужен
eval
внутри блока if?Разве мы не можем просто запустить pyenv init -
напрямую?
Спасибо за помощь!