programing

내 리눅스 시스템의 모든 사용자에 대해 환경 변수를 설정하는 방법은 무엇입니까?

showcode 2023. 5. 5. 10:00
반응형

내 리눅스 시스템의 모든 사용자에 대해 환경 변수를 설정하는 방법은 무엇입니까?

모든 사용자가 사용할 수 있는 설정을 지정할 수 있습니까?

게다가/etc/profile다른 사람들이 언급한 것처럼, 일부 리눅스 시스템은 이제 디렉토리를 사용합니다./etc/profile.d/아무개의.sh거기에 있는 파일들은 다음에 의해 소스될 것입니다./etc/profile이러한 파일에 사용자 지정 환경 항목을 보관하는 것이 단순히 편집하는 것보다 약간 더 깔끔합니다./etc/profile.

Linux OS에 다음 파일이 있는 경우:

/etc/environment

이 도구를 사용하여 모든 사용자의 환경 변수를 영구적으로 설정할 수 있습니다.

추출처: http://www.sysadmit.com/2016/04/linux-variables-de-entorno-permanentes.html

man 8 pam_env

man 5 pam_env.conf

모든 로그인 서비스가 PAM을 사용하고 모든 로그인 서비스가session required pam_env.so각각의/etc/pam.d/*구성 파일을 지정하면 모든 로그인 세션에 지정된 대로 일부 환경 변수가 설정됩니다.pam_env의 구성 파일입니다.

대부분의 최신 리눅스 배포판에서는 기본적으로 이 모든 것이 존재합니다. 원하는 글로벌 환경 변수를 에 추가하기만 하면 됩니다./etc/security/pam_env.conf.

이것은 사용자의 셸에 관계없이 작동하며 그래픽 로그인에도 작동합니다(xdm/kdm/gdm/entence/…가 이렇게 설정된 경우).

놀랍게도 유닉스와 리눅스는 실제로 글로벌 환경 변수를 설정할 수 있는 곳이 없습니다.최상의 방법은 특정 셸에 사이트별 초기화를 설정하는 것입니다.

넣으면, 넣으면, 넣으면,/etc/profile대부분의 포식스 호환 쉘 사용자들을 위한 일들을 처리할 것입니다.이는 중요하지 않은 목적에 "충분히" 적합합니다.

하지만 누구든..csh또는tcsh쉘은 그걸 보지 못할 거예요, 그리고 전 믿지 않아요.csh글로벌 초기화 파일이 있습니다.

bashman 페이지에서 몇 가지 흥미로운 발췌문:

bash가 대화형 로그인 셸로 호출되거나 vash와 대화형이 아닌 셸로 호출되는 경우--login옵션, 먼저 파일에서 명령을 읽고 실행합니다./etc/profile해당 파일이 존재하는 경우.그 파일을 읽은 후에, 그것은 다음을 찾습니다.~/.bash_profile,~/.bash_login,그리고.~/.profile이 순서대로, 존재하고 읽을 수 있는 첫 번째 명령에서 명령을 읽고 실행합니다.--noprofile이 동작을 금지하기 위해 셸이 시작될 때 옵션을 사용할 수 있습니다.
...
로그인 셸이 아닌 대화형 셸이 시작되면 bash는 다음 명령을 읽고 실행합니다./etc/bash.bashrc그리고.~/.bashrc파일이 존재하는 경우이 기능은 다음을 사용하여 억제할 수 있습니다.--norc선택.--rcfile을 사용하면 "bash" 수 있습니다./etc/bash.bashrc그리고.~/.bashrc.

다음을 살펴 보십시오./etc/profile또는/etc/bash.bashrc이러한 파일은 글로벌 설정에 적합한 위치입니다.환경 변수를 설정하려면 다음과 같은 것을 입력합니다.

export MY_VAR=xxx

리눅스 커널에서 실행되는 모든 프로세스는 상위 프로세스로부터 상속받은 고유한 환경을 받습니다.이 경우 부모는 셸 자체(서브 셸 생성) 또는 '로그인' 프로그램(일반적인 시스템)이 됩니다.

각 프로세스의 환경이 보호되므로 실행 중인 모든 프로세스에 환경 변수를 '주입'할 방법이 없으므로 기본 셸 .rc / 프로파일을 수정하더라도 각 프로세스가 종료되고 시작 설정을 다시 로드할 때까지 환경 변수가 적용되지 않습니다.

/etc/에서 특정 셸에 대한 기본 시작 변수를 수정합니다.사용자는 개별 설정에서 변경할 수 있으며 종종 변경할 수도 있습니다.

Unix는 제한 내에서 사용자에게 복종하도록 설계되었습니다.

NB: 시스템에서 Bash만이 유일한 셸이 아닙니다./bin/sh 심볼 링크가 실제로 가리키는 것에 주의를 기울입니다.많은 시스템에서 이것은 실제로 (기본적으로, 특별한 호출 없이) POSIXLY가 맞는 대시일 수 있습니다.따라서 두 기본값을 모두 수정해야 합니다. 그렇지 않으면 /bin/sh로 시작하는 스크립트가 글로벌 기본값을 상속하지 않습니다.마찬가지로, 둘 다 편집할 때 bash만 이해하는 구문을 피하도록 주의하십시오.avoiding bashisms.

PAM을 사용하는 것이 좋습니다.

# modify the display PAM
$ cat /etc/security/pam_env.conf 
# BEFORE: $ export DISPLAY=:0.0 && python /var/tmp/myproject/click.py &
# AFTER : $ python $abc/click.py &
DISPLAY  DEFAULT=${REMOTEHOST}:0.0 OVERRIDE=${DISPLAY}
abc   DEFAULT=/var/tmp/myproject

언급URL : https://stackoverflow.com/questions/1641477/how-to-set-environment-variable-for-everyone-under-my-linux-system

반응형