Đặt đường dẫn cho Pyenv

Aug 25 2020

Tôi đang cố gắng đặt đường dẫn tải cho Pyenv trong .bashrctệp máy chủ của mình .

Tôi đang làm theo hướng dẫn này , nơi nó yêu cầu chúng tôi đặt thành pyenvđường dẫn tải

Tuy nhiên, trong .bashrctệp của tôi , tôi đã thấy các lệnh dưới đây

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

Và nó khác gì so với những điều đã được cung cấp trong bài hướng dẫn được chia sẻ ở trên?

export PATH="$HOME/.pyenv/bin:$PATH"
eval "$(pyenv init -)" eval "$(pyenv virtualenv-init -)"

Tôi có thể biết if...fikhối làm gì trong đoạn mã được hiển thị ở trên không?

Trả lời

1 kHarshit Aug 27 2020 at 07:39

Nó chủ yếu là cú pháp của bash.

# 1.

export PYENV_ROOT="$HOME/.pyenv" export PATH="$PYENV_ROOT/bin:$PATH"

tương đương với

export PATH="$HOME/.pyenv/bin:$PATH"

như trong trường hợp đầu tiên, bạn đang khai báo một biến được đặt tên PYENV_ROOTsau đó sử dụng nó.

# 2.

iffilà cách bạn viết câu lệnh if trong bash.

# 3.

command -v pyenvđược sử dụng để thực thi một lệnh ( pyenv) trong trường hợp này, -vtùy chọn in tên đường dẫn, ví dụ:

$ command -v python
/usr/bin/python
if command -v pyenv 1

có nghĩa là nếu lệnh pyenvđược tìm thấy, thì hãy thực thieval "$(pyenv init -)"

#4.

Ở đây, >/dev/null 2>&1;được sử dụng để loại bỏ đầu ra. đọc thêm về nó câu trả lời này .

Do đó, hai khối mã gần như giống nhau, điểm khác biệt duy nhất là: khối đầu tiên có một if-blockvà khối thứ hai có thêm một lệnh eval "$(pyenv virtualenv-init -)".