Установка пути для Pyenv

Aug 25 2020

Я пытаюсь установить путь загрузки для 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блок в приведенном выше коде?

Ответы

1 kHarshit Aug 27 2020 at 07:39

В основном это синтаксис 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 -)".