내 ~/.bashrc
Linux에는 다음과 같은 경로를 추가하는 줄이 있습니다 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"}")
답변4
.bashrc를 변경한 후 다음 명령을 실행합니다.
. .bashrc
그러면 .bashrc의 내용이 현재 환경에 배치됩니다.