[unix] X 앱이 액세스 할 수 있도록 PATH 또는 기타 환경 변수를 어떻게 설정합니까?

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

비쉘 환경 (KDE)에서 경로를 어떻게 설정합니까?

위의 두 질문과 달리 그놈을 위해이 작업을 수행하는 방법을 알고 싶습니다. 또는 창 관리자와 독립적 인 방법이 있습니까? 쉘 / 터미널의 경우 일반적으로 편집 ~/.bashrc합니다. 창 관리자에 관계없이 모든 X 응용 프로그램에서 환경 변수를 사용할 수 있도록 내보내기 명령문을 어디에 둘 수 있습니까?



답변

대해 pam_env의 PAM 모듈하자가 당신이 중 하나를 설정의 /etc/environment또는에서 ~/.pam_environment모든 사용자 (전체 시스템)를 위해 그것을 여부에 따라, 또는 당신의 사용자 (세션 전체).

시스템 전체 환경 변수

시스템 전체에 영향을 미치는 환경 변수 설정 (특정 사용자가 아닌)은 시스템 또는 데스크탑 세션이로드 될 때 실행되는 많은 시스템 수준 스크립트에 배치되어서는 안됩니다.

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

세션 전체 환경 변수

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

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

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

환경 변수에 대한 우분투 위키에서 더 많은 것을보십시오 .


답변

/etc/X11/Xsession.d/… 또는 Linux (?)에 따라 해당 디렉토리의 행을 따라. 나는 여기에 조금 썼다 .

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


답변

프로세스는 시작하는 상위 프로세스에서 환경을 상속합니다. 자식의 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는 1481에 의해 시작된 (일부 하위의?) 1497에 의해 시작되었으며, 이는 조상 프로세스 0에 의해 시작된 PID 1에 의해 시작되었습니다.

영향을 미치려는 프로세스에 대해 유사한 상속 추적을 수행하고 어떤 초기화 파일이 관련되어 있는지 파악한 다음 해당 트리의 어딘가에서 PATH를 변경하십시오.

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


답변