Path
如何在 $PATH 中隱藏執行檔?
pipenv
我的s 中有 2 個不同版本$PATH
:$ where pipenv /usr/local/Caskroom/miniconda/base/bin/pipenv #1 /usr/local/bin/pipenv #2
我想遮蔽
pipenv
#1 以便 #2 優先,而
- 保持在
/usr/local/Caskroom/miniconda/base/bin
之前。/usr/local/bin``$PATH
- 不
alias pipenv='/usr/local/bin/pipenv'
。- no running
mv /usr/local/Caskroom/miniconda/base/bin/pipenv{,.bak}
,或者
rm /usr/local/Caskroom/miniconda/base/bin/pipenv
(將來升級 pipenv 時,conda 將在該位置再次安裝 pipenv),或者解除安裝
pipenv
#1(它是某些 conda 包的依賴項),或者類似的東西。
我怎麼做?
~/bin
將另一個目錄(例如PATH
.pipenv
在該目錄中創建一個指向您首選的符號連結。例如:
- 將此行放入您的
.profile
:PATH=~/bin:$PATH
- 這樣做一次:
mkdir ~/bin ln -s /usr/local/bin/pipenv ~/bin
pipenv
如果需要,您還可以選擇動態呼叫哪個。(例如,如果您的主目錄在多台電腦之間共享,並且您希望pipenv
在不同的電腦上有不同的首選目錄,或者如果您想要一種方便的方式來選擇您的首選pipenv
。)如果您想這樣做,而不是符號連結,創建一個包含如下內容的包裝腳本並使其可執行 (chmod +x ~/bin/pipenv
)。#!/bin/sh if [ -x /usr/local/bin/pipenv ]; then pipenv=/usr/local/bin/pipenv elif [ -x /usr/local/Caskroom/miniconda/base/bin/pipenv ]; then pipenv=/usr/local/Caskroom/miniconda/base/bin/pipenv else pipenv=/usr/bin/pipenv fi exec $pipenv "$@"