위의 두 질문과 달리 그놈을 위해이 작업을 수행하는 방법을 알고 싶습니다. 또는 창 관리자와 독립적 인 방법이 있습니까? 쉘 / 터미널의 경우 일반적으로 편집 ~/.bashrc
합니다. 창 관리자에 관계없이 모든 X 응용 프로그램에서 환경 변수를 사용할 수 있도록 내보내기 명령문을 어디에 둘 수 있습니까?
위의 두 질문과 달리 그놈을 위해이 작업을 수행하는 방법을 알고 싶습니다. 또는 창 관리자와 독립적 인 방법이 있습니까? 쉘 / 터미널의 경우 일반적으로 편집 ~/.bashrc
합니다. 창 관리자에 관계없이 모든 X 응용 프로그램에서 환경 변수를 사용할 수 있도록 내보내기 명령문을 어디에 둘 수 있습니까?
답변:
대해 pam_env의 PAM 모듈하자가 당신이 중 하나를 설정의 /etc/environment
또는에서 ~/.pam_environment
모든 사용자 (전체 시스템)를 위해 그것을 여부에 따라, 또는 당신의 사용자 (세션 전체).
시스템 전체 환경 변수
시스템 전체에 영향을 미치는 환경 변수 설정 (특정 사용자가 아닌)은 시스템 또는 데스크탑 세션이로드 될 때 실행되는 많은 시스템 수준 스크립트에 배치되어서는 안됩니다.
/etc/environment
-이 파일은 특히 시스템 전체 환경 변수 설정을위한 것입니다. 스크립트 파일은 아니지만 한 줄에 하나씩 할당 표현식으로 구성됩니다. 특히이 파일은 시스템 전체 로캘 및 경로 설정을 저장합니다.
세션 전체 환경 변수
시스템 전체가 아닌 특정 사용자에게만 영향을 미치는 환경 변수 설정은 다음과 같이 설정해야합니다.
~/.pam_environment
-이 파일은 특별히 사용자 환경을 설정하기위한 것입니다. 스크립트 파일은 아니지만 한 줄에 하나씩 할당 표현식으로 구성됩니다.참고 : 사용
.pam_environment
하려면 변수를 초기화하기 위해 다시 로그인해야합니다. 터미널 만 다시 시작하면 변수를 사용할 수 없습니다.
환경 변수에 대한 우분투 위키에서 더 많은 것을보십시오 .
~/.xsession
X 응용 프로그램의 환경 변수를로드합니다. 참조 unix.stackexchange.com/questions/47359/what-is-xsession-for
user_envfile=filename
. pam_env의 내 문제는 PAM 응용 프로그램에 따라 HOME 변수를 사용하지 못할 수 있다는 것입니다. 절대 변수로만 사용하도록 제한합니다.
/etc/X11/Xsession.d/
... 또는 Linux (?)에 따라 해당 디렉토리의 행을 따라. 나는 여기에 조금 썼다 .
개념은 로그인 후 디스플레이 관리자가 "Xsession"을 시작하고 해당 디렉토리의 모든 것을 알파벳 순서로 소스 (!)하는 것입니다. PATH를 수정하는 스크립트를 추가하면됩니다. Xsession은 절대적으로 DE가되며 일반적으로 모든 프로세스는 해당 Xsession의 하위 프로세스이므로 PATH 환경을 상속합니다.
/etc/X11/Xsession.d/40x11-common_xsessionrc
소스 글로벌 환경 변수. 이 스크립트는 파일이 존재하면 $ HOME / .xsessionrc에있는 모든 것을 소싱합니다. 이를 통해 사용자는 로케일 정보와 같은 X 세션에 대한 글로벌 환경 변수를 설정할 수 있습니다.
프로세스는 시작하는 상위 프로세스에서 환경을 상속합니다. 자식의 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
ps
GUI 로그인의 상위 프로세스를 결정하는 데 사용할 수 있습니까 ?
~/.pam_environment
솔루션 의 문제점 은 배포에서 다르게 구성하지 않으면 기본적으로 pam_env 모듈이 읽지 않는다는 것입니다. Fedora 20에서는 예를 들어 읽지 않았습니다.