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


16

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

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

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

답변:


12

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

시스템 전체 환경 변수

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

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

세션 전체 환경 변수

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

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

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

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


2
~/.pam_environment솔루션 의 문제점 은 배포에서 다르게 구성하지 않으면 기본적으로 pam_env 모듈이 읽지 않는다는 것입니다. Fedora 20에서는 예를 들어 읽지 않았습니다.
Cristian Ciupitu

@CristianCiupitu가 맞습니다. ~/.xsessionX 응용 프로그램의 환경 변수를로드합니다. 참조 unix.stackexchange.com/questions/47359/what-is-xsession-for
테크

@CristianCiupitu : pam_env로 연결되는 귀하의 의견에 감사드립니다. 사용자 환경을 활성화하기 위해 Fedora 24 pam 파일을 업데이트했습니다. 이제 Wayland 세션에는 모두 사용자 지정 PATH가 있습니다.
Zan Lynx

@CristianCiupitu는 사실입니까? linux-pam.org/Linux-PAM-html/sag-pam_env.html 문서 는 ~ / .pam_environment가 달리 지정되지 않는 한 읽을 기본 파일임을 암시합니다. 의 라인을 참조하십시오 user_envfile=filename. pam_env의 내 문제는 PAM 응용 프로그램에 따라 HOME 변수를 사용하지 못할 수 있다는 것입니다. 절대 변수로만 사용하도록 제한합니다.
CMCDragonkai

2
Fedora의 pam_env (8) 매뉴얼 페이지 @CMCDragonkai는 " PAM 환경의 사용자 제공 환경 변수가 시스템 관리자의 동의없이 스택의 후속 모듈 동작에 영향을 줄 수 있으므로 기본적으로이 옵션은 해제 되어 있습니다"라고 말합니다 . 따라서 업스트림 PAM 모듈에는 일부 기본 설정이 있지만 일부 배포판은이를 덮어 씁니다.
Cristian Ciupitu

1

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

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


$ HOME 디렉토리에 설정할 수있는 것과 동등한 것이 있습니까? .Xsession처럼?
Code-Guru

Xession (5)에 따르면 : /etc/X11/Xsession.d/40x11-common_xsessionrc 소스 글로벌 환경 변수. 이 스크립트는 파일이 존재하면 $ HOME / .xsessionrc에있는 모든 것을 소싱합니다. 이를 통해 사용자는 로케일 정보와 같은 X 세션에 대한 글로벌 환경 변수를 설정할 수 있습니다.
Bananguin

1

프로세스는 시작하는 상위 프로세스에서 환경을 상속합니다. 자식의 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

psGUI 로그인의 상위 프로세스를 결정하는 데 사용할 수 있습니까 ?
Code-Guru
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.