X 응용 프로그램이 액세스할 수 있도록 PATH 또는 기타 환경 변수를 어떻게 설정합니까?

X 응용 프로그램이 액세스할 수 있도록 PATH 또는 기타 환경 변수를 어떻게 설정합니까?

KDE가 인식하도록 환경 변수를 어떻게 설정합니까?

비쉘 환경(KDE)에서 경로를 설정하는 방법은 무엇입니까?

위의 두 가지 질문과 달리 GNOME에서는 어떻게 하는지 알고 싶습니다. 아니면 더 나은 방법은 창 관리자와 독립적인 방법이 있다는 것입니다. 쉘/터미널의 경우 일반적으로 ~/.bashrc.

답변1

이것pam_envPAM 모듈을 사용하면 모든 사용자(시스템 전체) 또는 사용자만(세션 전체)에서 작동할지 여부에 따라 in /etc/environment또는 out 으로 설정할 수 있습니다 .~/.pam_environment

시스템 전체 환경 변수

특정 사용자뿐만 아니라 전체 시스템에 영향을 미치는 환경 변수 설정은 시스템 또는 데스크탑 세션이 로드될 때 실행되는 많은 시스템 수준 스크립트에 배치되어서는 안 되며,

/etc/environment- 이 파일은 시스템 전체의 환경 변수 설정 전용입니다. 스크립트 파일은 아니지만 한 줄에 하나의 할당 표현식으로 구성됩니다. 특히 이 파일은 시스템 전체의 로케일 및 경로 설정을 저장합니다.

세션 범위 환경 변수

전체 시스템이 아닌 특정 사용자에게만 영향을 미치는 환경 변수 설정은 다음과 같이 설정되어야 합니다.

~/.pam_environment- 이 파일은 사용자 환경을 설정하기 위해 특별히 사용됩니다. 스크립트 파일은 아니지만 한 줄에 하나의 할당 표현식으로 구성됩니다.

참고: .pam_environment변수를 초기화하려면 다시 로그인해야 합니다. 단순히 터미널을 다시 시작하는 것만으로는 변수를 사용할 수 없습니다.

더 많은 정보를 원하시면 방문해주세요우분투 환경 변수 위키.

답변2

/etc/X11/Xsession.d/...또는 Linux(?)에 따라 해당 디렉토리의 라인을 따라 실행됩니다. 그 위에 조금 썼어요여기.

개념은 로그인 후 디스플레이 관리자가 "Xsession"을 시작하고 해당 디렉토리에 있는 모든 것을 알파벳순으로 소스(!)한다는 것입니다. PATH를 수정하는 스크립트를 추가하기만 하면 됩니다. Xsession은 결국 DE가 되며 일반적으로 모든 프로세스는 해당 Xsession의 하위이므로 PATH 환경을 상속합니다.

답변3

프로세스는 자신을 시작한 상위 프로세스로부터 환경을 상속받습니다. 하위 프로세스에서 PATH 또는 기타 환경 값을 변경하려면 변수를 상위 프로세스의 값으로 설정하고 셸에 있는 경우 변수를 내보낸 다음 하위 프로세스를 시작할 수 있습니다. 하위 프로세스는 시작 시 하나 이상의 초기화 파일을 읽어 자체 환경을 변경할 수도 있습니다.

그러므로 대답해야 할 두 가지 질문이 남아 있습니다.

PATH 또는 환경 변경의 영향을 받기를 원하는 프로세스로 이어지는 상위/하위 상속 트리는 무엇입니까?

이 트리의 관련 프로세스에서는 어떤 초기화 파일을 사용/읽기/가져오나요?

다음은 상속 트리의 의미를 보여주는 ps(1) 출력의 일부입니다.

# /bin/ps -o 'uid:5,pid:5,ppid:5,user:4,args' axf 

UID   PID  PPID USER COMMAND
  0     1     0 root /usr/lib/systemd/systemd
  0  1481     1 root /usr/sbin/gdm-binary -nodaemon
  0  1497  1481 root  \_ /usr/libexec/gdm-simple-slave ...
  0  1504  1497 root      \_ /usr/bin/Xorg :0 ...
  0  1855  1497 root      \_ gdm-session-worker ...

\_ 그래픽 순서와 PIP/PPID 번호(프로세스 ID 및 상위 PID)를 기록해 두십시오. PID 1855는 (일부 하위 프로세스?) 1497에 의해 시작되고, 1497은 1481에 의해 시작되고, 1481은 조상 프로세스 0에 의해 시작되는 PID 1에 의해 시작됩니다.

영향을 미치려는 프로세스에 대해 유사한 상속 추적을 수행하고 관련 초기화 파일을 찾은 다음 해당 트리 어딘가에서 PATH를 변경합니다. 아마도 다음과 같습니다.

PATH=${PATH}:/usr/local/bin

관련 정보