이것을 입력하면 echo $PATH
다음과 같은 결과가 나타납니다.
/usr/local/bin:/usr/bin:/bin:/usr/local/games:/usr/games
PATH
그러나 ;를 사용하여 변수 파일을 수정했는데 gksudo gedit /etc/environment
이제는 PATH="/opt/texbin:/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/usr/games:/usr/local/games"
.
왜 두 가지 다른 값을 얻고 있는지 잘 모르겠습니다 PATH
. 어떻게 해결할 수 있나요?
저는 Crouton을 사용하여 Chromebook에서 Xfce를 실행하고 있습니다.
답변1
편집하다
/etc/profile
모든 사용자에게 영향을 미칩니다.~/.bash_profile
단일 사용자의 bash 쉘에 영향을 미칩니다(bash 관련 항목이므로 이는 아닙니다).~/.profile
단일 사용자와 모든 쉘에 영향을 미칩니다.
참고: 및 가 둘 다 있고 .profile
bash 가 둘 다 읽도록 하려면 다음과 같은 경우 읽지 않는 기본값에 를 추가 해야 .bash_profile
합니다.. .profile
.bash_profile
.profile
.bash_profile exists
존재하다sudo
- 편집기를 루트로 실행하지 마십시오. 따라서 이렇게 하지 마십시오.
gksudo gedit «filename»
- X11 응용 프로그램을 루트로 실행하지 마십시오. 따라서 이렇게 하지 마십시오.
gksudo gedit «filename»
- 대신,
EDITOR=gedit sudoedit «filename»
임시 파일인 것처럼 편집기를 실행하고, 완료되면 채워진 내용을 루트로 복사합니다.
답변2
올바른 설정 위치는 PATH
다음과 같습니다 ~/.bash_profile
.
PATH="$PATH:/some/extra/paths:/may/go/here"
변수는 PATH
이미 내보내졌으므로 다시 내보낼 필요가 없습니다. export
다시 내보내도 더 이상 효과가 없습니다.
기본 경로는 실행 파일 bash
에 하드 코딩된 bash
다음 /etc/profile
(일부 시스템에서는) 및 (일부 시스템에서는) 추가로 (아마도) 수정됩니다 /etc/bash.bashrc
.
내 생각 엔 설정된 경로는 주로 등과 /etc/environment
같은 비 쉘에서 사용되는 것입니다 .cron
또한보십시오:
답변3
/etc/environment
시스템 전체 대체입니다. 사용자별 구성이 ~/.bash_profile
이를 재정의할 수 있습니다. 어쨌든, /etc/environment
bash를 구성하는 데 어려움을 겪지 말고 , 대신 PATH
원하는 것을 넣으십시오 ~/.bash_profile
. 그것이 틀리더라도 /etc/environment
, 당신이 넣은 것에 의해 덮어쓰여질 것입니다 ~/.bash_profile
.
/etc/environment
또한 이에 의존하는 프로그램의 사소한 손상을 방지하려면 이전 상태로 되돌려야 할 수도 있습니다 . 이 파일은 패키지와 함께 제공되므로 패키지 관리자를 사용하여 원래 형식으로 재설정할 수 있습니다.
답변4
업데이트 참고 사항: 저는 이것을 zsh용으로 작성했지만 bash에서도 작동합니다.
도로를 깨끗하게 유지하기 위해 제가 사용하는 비법은 다음과 같습니다. (참고: zsh 0_pathfix.zsh
구성을 별도의 파일로 로드했습니다. 이 파일을 먼저 로드해야 하므로 표준화된 명명 규칙을 유지하면서 이를 적용하는 쉬운 방법은 앞에 를 붙이는 것입니다
# add to path if $1 is not already in path
pathAppend() {
if ! echo $PATH | egrep -q "(^|:)$1($|:)" ; then
PATH=$PATH:$1
fi
}
# filters the path checking against itself for duplicates returns clean path then exports the clean path.
PATH=$(echo "$PATH" | awk -v RS=':' -v ORS=":" '!a[$1]++{if (NR > 1) printf ORS; printf $a[$1]}'); export PATH;
# This ensures that even if you manually added to the path the next time zsh source is reloaded the path will clean itself.