Установка пути для Pyenv
Я пытаюсь установить путь загрузки для Pyenv в своем .bashrcфайле сервера .
Я следую этому руководству, где нас просят установить pyenvпуть загрузки
Однако в моем .bashrcфайле я уже вижу следующие команды
export PYENV_ROOT="$HOME/.pyenv" export PATH="$PYENV_ROOT/bin:$PATH" if command -v pyenv 1>/dev/null 2>&1; then eval "$(pyenv init -)"
fi
И чем он отличается от приведенного ниже в руководстве, опубликованном выше?
export PATH="$HOME/.pyenv/bin:$PATH"
eval "$(pyenv init -)" eval "$(pyenv virtualenv-init -)"
Могу ли я узнать, что делает if...fiблок в приведенном выше коде?
Ответы
В основном это синтаксис bash.
№1.
export PYENV_ROOT="$HOME/.pyenv" export PATH="$PYENV_ROOT/bin:$PATH"
эквивалентно
export PATH="$HOME/.pyenv/bin:$PATH"
как и в первом случае, вы объявляете переменную с именем и PYENV_ROOTзатем используете ее.
№2.
ifи fiкак вы пишете операторы if в bash.
№3.
command -v pyenvиспользуется для выполнения команды ( pyenv), в этом случае -vопция печатает путь, например
$ command -v python
/usr/bin/python
if command -v pyenv 1
означает, что если команда pyenvнайдена, то выполнитьeval "$(pyenv init -)"
№4.
Здесь >/dev/null 2>&1;используется для отбрасывания вывода. подробнее об этом читайте в этом ответе .
Следовательно, два блока кода почти одинаковы, единственные отличия заключаются в том, что у первого есть, if-blockа у второго - одна дополнительная команда eval "$(pyenv virtualenv-init -)".