$PATH에서 실행 파일을 숨기는 방법은 무엇입니까?

$PATH에서 실행 파일을 숨기는 방법은 무엇입니까?

pipenv내 s에는 두 가지 버전이 있습니다 $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(conda는 향후에 Pipenv가 업그레이드될 때 해당 위치에 Pipenv를 다시 설치합니다)
    또는 pipenv#1(일부 conda 패키지의 종속성)을 제거하는
    등의 작업을 수행합니다.

어떻게 해야 하나요?

답변1

예를 들어 다른 디렉토리를 ~/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 "$@"

관련 정보