PATH에서 추가된 경로를 제거하시겠습니까?

PATH에서 추가된 경로를 제거하시겠습니까?

~/.bashrcLinux에는 다음과 같은 경로를 추가하는 줄이 있습니다 PATH.

PATH=~/mydoc:~/mypython:"$PATH"

추가하는 목적은 ~/mypython시스템 기본값 대신 제가 직접 설치한 Python을 사용하기 위함입니다. 하지만 이제 시스템 기본 Python을 사용하도록 다시 변경하고 싶습니다. 로그아웃하지 않고 ~/mypython값을 쉽게 삭제할 수 있는 방법이 있습니까 PATH?

답변1

PATH=$(tr ":" "\n" <<<"$PATH" | grep -Fxv "$HOME/mypython" | paste -sd:)

답변2

셸에서 경로를 업데이트할 수 있습니다.

TRIM=~/mypython
export PATH=$(echo "$PATH" | sed -e "s,:$TRIM:,:," -e "s,:$TRIM\$,," -e "s,^$TRIM:,," )

이는 특정 상황보다 더 일반적입니다. 이것은 사용될 수 있습니다

TRIM=~/mypython
export PATH=$(echo "$PATH" | sed -e "s,:$TRIM:,:," )

TRIM물결표 확장 값은 명령에서 확장 ~/mypython되지 않으므로 임시 변수를 사용하여 저장합니다. sed나도 그랬어아니요$HOME(일반적으로 동일하지만) ~(물결표)의 확장과 동일한 값을 갖는다 는 보장이 없기 때문에 사용됩니다 . HOME필요한 경우 실제 홈 디렉터리와 다른 디렉터리를 설정할 수 있습니다 (일반적으로 그렇지 않음).좋은 것물론 그렇게 해야 합니다.)

내 자신의 용도로는 유틸리티를 사용합니다.newpath,예를 들어,

export PATH=$(newpath -r ~/mypython)

답변3

다음은 모든 극단적인 경우를 처리하는 PATH 구성 요소를 제거하는 함수입니다. (빈 구성 요소를 가진 사악한 것조차도.)

remove_from_PATH () {
  while case $PATH in
          "$1") unset PATH; false;;
          "$1:"*) PATH=${PATH#"$1:"};;
          *":$1") PATH=${PATH%":$1"};;
          *":$1:"*) PATH=${PATH%%":$1:"*}:${PATH#*":$1:"};;
          *) false;;
        esac
  do
    :
  done
}

remove_from_PATH ~/mypython

zsh에서는 arrays 를 사용하는 것이 더 쉽습니다 path.

path=("${(@)path:#"$HOME/mypython"}")

알아채다PATH수정 하면 안 된다.bashrc.

답변4

.bashrc를 변경한 후 다음 명령을 실행합니다.

 . .bashrc

그러면 .bashrc의 내용이 현재 환경에 배치됩니다.

관련 정보