내 리눅스 시스템의 모든 사용자에 대해 환경 변수를 설정하는 방법은 무엇입니까?
모든 사용자가 사용할 수 있는 설정을 지정할 수 있습니까?
게다가/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
모든 로그인 서비스가 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
'programing' 카테고리의 다른 글
DateTime 유형에서 시간이 없는 날짜만 비교하는 방법은 무엇입니까? (0) | 2023.05.05 |
---|---|
SQL 서버의 연결 시간 초과 (0) | 2023.05.05 |
단순 파이프로 소수점 2자리까지 제한합니다. (0) | 2023.04.25 |
Angular 4에서 실시간 창 크기 변화를 감지합니다. (0) | 2023.04.25 |
awk 스크립트에서 셸 변수를 사용하려면 어떻게 해야 합니까? (0) | 2023.04.25 |