Reputation: 7693
I am trying to set the load path for Pyenv in my server .bashrc
file.
I am following this tutorial where it asks us to set pyenv
to the load path
However, in my .bashrc
file, I already see the below commands
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
And how is it different from the below provided in the tutorial shared above?
export PATH="$HOME/.pyenv/bin:$PATH"
eval "$(pyenv init -)"
eval "$(pyenv virtualenv-init -)"
May I know what does if...fi
block does in the code shown above?
Upvotes: 3
Views: 12530
Reputation: 12827
It's mostly bash's syntax.
#1.
export PYENV_ROOT="$HOME/.pyenv"
export PATH="$PYENV_ROOT/bin:$PATH"
is equivalent to
export PATH="$HOME/.pyenv/bin:$PATH"
as in the first case, you're declaring a variable named PYENV_ROOT
then using it.
#2.
if
and fi
are how you write if-statements in bash.
#3.
command -v pyenv
is used to execute a command (pyenv
) in this case, the -v
option prints the pathname e.g.
$ command -v python
/usr/bin/python
if command -v pyenv 1
means that if the command pyenv
is found, then execute eval "$(pyenv init -)"
#4.
Here, >/dev/null 2>&1;
is used to discard the output. read more about it this answer.
Hence, two blocks of code are almost same, the only differences are: the first one has a if-block
and second one has one extra command eval "$(pyenv virtualenv-init -)"
.
Upvotes: 4