Path

如何在 $PATH 中隱藏執行檔?

  • September 1, 2021

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 "$@"

引用自:https://unix.stackexchange.com/questions/667136