PATH
gnome-terminal이 쉘을 호출할 때 환경 변수를 수정했을 수도 있습니다. 특히 는 $HOME/.local/bin:$HOME/bin
항상 에 추가됩니다 PATH
.
나는 이를 증명하기 위해 다음과 같은 실험을 했습니다.
- 그놈 터미널 열기
- 편집->기본 설정->프로필로 이동하여 현재 프로필을 "편집"합니다(저에게는 "이름 없음"이었습니다).
- "명령" 탭에서 "내 쉘 대신 사용자 정의 명령 실행"을 선택하고 다음 입력 영역을 입력합니다
sh
. 이렇게 하면 로그인 쉘이 아닌bash
-way 모드에서 호출되어야 합니다 .sh
/etc/profile
, ,을(를$HOME/.bash_profile
)$HOME/.bashrc
획득하지 못하도록 하기 위해 일시적으로 해당 파일의 이름을 변경합니다. (실제로 non-login 을 호출하고 있으므로 이 파일을 가져오면 안 됩니다sh
.)이제 새 gnome 터미널 창을 열고
echo $PATH
다음을 실행합니다./usr/local/bin:/usr/local/sbin:/usr/bin:/usr/sbin:/bin:/sbin:/home/naitree/.local/bin:/home/naitree/bin
마지막 두 경로가 PATH
.
이러한 사실을 바탕으로 다음과 같은 설명이 가능하다고 생각합니다.
PATH
이 경우 상위 프로세스에서 상속 됩니다gnome-terminal-server
.PATH
어느 시점에서 신비롭게 시작된 스크립트에서 수정되었습니다 .sh
PATH
gnome-terminal-server가 하위 프로세스를 포크할 때 수정됩니다.
이제 나는 가능성 #1과 #2를 배제했다고 생각합니다.
cat /proc/$PPID/environ
PID$PPID
는gnome-terminal-server
해당PATH
변수가/usr/local/bin:/usr/local/sbin:/usr/bin:/usr/sbin
우리가 찾고 있는 내용을 포함하지 않음을 나타냅니다.sh
방금 열고 실행한 프로세스에서는export -n PATH
이sh -x
새로운 init 프로세스에 어떤 소스도 표시되지 않습니다sh
. 그리고 그것은PATH
깨끗합니다:/usr/local/bin:/usr/bin
이제 마지막 가능성이 하나 남았습니다.
내가 뭐 놓친 거 없니? 신비한 수정에 대해 gnome-terminal이 책임이 있습니까 PATH
?
고쳐 쓰다:
sh -x
방금 사용자 정의 명령으로 시도했습니다 . 곤메 터미널을 연 후 아무것도 보이지 않습니다. 그러나 echo $PATH
그렇게 말하고 $HOME/.local/bin
거기 $HOME/bin
에 있으십시오.
다음은 출시에 관한 정보입니다.
- 페도라 23(4.4.8-300.fc23.x86_64)
- bash 버전 4.3.42(1)-릴리스(x86_64-redhat-linux-gnu)
업데이트 2:
방금 시도했습니다.
echo "$PATH"
맨 처음에 추가되었습니다~/.bashrc
.- bash를 사용하여 기본 비로그인 쉘 모드에서 gnome-terminal을 열고 사용자 정의 명령을 사용하십시오
bash -x
.
디버그 출력을 토대로 이것이 ~/.bashrc
스크립트 소스의 시작점임을 확인했습니다. 그러나 $HOME/.local/bin
과 는 $HOME/bin
그 이전에도 존재했습니다 PATH
.
답변1
PATH
처음에 터미널을 /usr/local/bin:/usr/local/sbin:/usr/bin:/usr/sbin
.
평소 의심되는 항목을 모두 확인한 후 , ~/.bashrc
, ~/.bash_profile
, 에서 설정을 변경해 보았습니다 . 그러나 나는 결국 여전히 거기에 있습니다./etc/bashrc
/etc/profile
DefaultEnvironment
/etc/systemd/system.conf
/etc/systemd/user.conf
/usr/local/...
PATH
pam_env
우연히 에 대한 언급을 발견했습니다. 그래서 다음 줄을 추가했습니다 /etc/security/pam_env.conf
.
PATH DEFAULT=/bin:/sbin
다시 로그인한 후 터미널 쉘은 PATH
성가신 로컬 경로를 제거했습니다.
pam_env
systemd 구성을 변경한 후 PID 1이나 프로세스 모두 systemd --user
환경에 로컬 경로가 없기 때문에 기본값이 다음에서 비롯된 것이라고 확신합니다 gnome-terminal-server
.
최신 Linux는 구성의 악몽이 되고 있습니다.
나는 이것이 OP의 질문에 대한 대답이 아니라는 것을 알고 있습니다. 하지만 언급할 가치는 충분할 것 같습니다.
답변2
Fedora의 의견에 따르면,~/.local/bin을 기본 경로에 추가하세요., 이는 Fedora 관련 변경 사항입니다.세게 때리다몇 년 전의 구성입니다.
변화는RPM으로 제작(업스트림 아님) 문서화되지 않았습니다.