모든 사용자에게 보편적 인 특정 설정을 사용할 수 있습니까?
모든 사용자에게 보편적 인 특정 설정을 사용할 수 있습니까?
답변:
/etc/profile
다른 리눅스 시스템 과 마찬가지로 , 일부 Linux 시스템은 이제 디렉토리를 사용합니다 /etc/profile.d/
. 에있는 모든 .sh
파일은에서 제공합니다 /etc/profile
. 그냥 편집하는 것보다 이러한 파일에 사용자 정의 환경을 유지하는 것이 약간 더 깔끔합니다 /etc/profile
.
LinuxOS에이 파일이있는 경우 :
/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
의 구성 파일에 지정된 일부 환경 변수가 설정됩니다 .
대부분의 최신 Linux 배포판에는 기본적으로 모든 것이 있습니다. 원하는 전역 환경 변수를에 추가하십시오 /etc/security/pam_env.conf
.
이것은 사용자의 쉘에 관계없이 작동하며 그래픽 로그인에서도 작동합니다 (xdm / kdm / gdm / entrance /…가 이와 같이 설정된 경우).
echo foo>/home/me/bar
하고 재부팅 한 후 다시 로그인하면 해당 파일이 생성되지 않습니다. (아마도 이것을 테스트하는 더 우아한 방법이있을 수 있지만, 여기에 주석을 달기 전에 확신을 갖고 싶었습니다.)
놀랍게도 Unix와 Linux는 실제로 전역 환경 변수를 설정할 수있는 곳이 없습니다. 가장 좋은 방법은 특정 셸이 사이트 별 초기화를 갖도록 정렬하는 것입니다.
에 넣으면 /etc/profile
대부분의 posix 호환 쉘 사용자가 처리합니다. 이것은 중요하지 않은 목적으로 "충분히 충분"할 것입니다.
그러나 csh
또는 tcsh
셸을 가진 사람 은 그것을 볼 수 없으며 csh
전역 초기화 파일이 있다고 생각하지 않습니다 .
/etc/environment
실제로 루트 사용자로도 환경 변수를 설정하는 것 같습니다. 나는 그것이 /etc/environment
아마존 리눅스와 우분투에 있다는 것을 알고있다 . csh, tcsh 또는 zsh에서 작동하는지 확인하지 못했습니다.
bash 맨 페이지에서 몇 가지 흥미로운 발췌 내용 :
bash가 대화식 로그인 쉘 또는
--login
옵션이 있는 비 대화식 쉘로 호출되면/etc/profile
파일이 존재하는 경우 먼저 파일에서 명령을 읽고 실행 합니다. 해당 파일을 읽은 후, 그것은을 찾습니다~/.bash_profile
,~/.bash_login
그리고~/.profile
, 순서대로, 그리고 읽고 존재하고 읽을 수있는 첫 번째에서 실행하는 명령을.--noprofile
쉘이 동작을 억제하기 시작할 때 옵션을 사용할 수있다.
...
로그인 쉘이 아닌 대화식 쉘이 시작될 때 bash는 파일이 존재하는 경우/etc/bash.bashrc
및~/.bashrc
에서 명령을 읽고 실행 합니다. 이--norc
옵션 을 사용하여 금지 할 수 있습니다 . 그만큼--rcfile
파일 옵션을 읽고 대신 파일에서 명령을 실행하는 떠들썩한 파티를 강제/etc/bash.bashrc
하고~/.bashrc
.
그래서 한 번 봐 가지고 /etc/profile
또는 /etc/bash.bashrc
이러한 파일은 전역 설정에 적합한 장소입니다. 환경 변수를 설정하려면 다음과 같은 것을 넣으십시오.
export MY_VAR=xxx
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
Linux 커널에서 실행되는 모든 프로세스는 상위에서 상속 된 고유 한 고유 환경을받습니다. 이 경우 상위는 쉘 자체 (하위 쉘 생성) 또는 '로그인'프로그램 (일반 시스템)입니다.
각 프로세스의 환경이 보호되므로 실행중인 모든 프로세스에 환경 변수를 '주입'할 수있는 방법이 없으므로 기본 쉘 .rc / 프로파일을 수정하더라도 각 프로세스가 종료되고 다시로드 될 때까지 적용되지 않습니다. 시작 설정.
/ etc /에서 특정 쉘의 기본 시작 변수를 수정하십시오. 사용자는 개별 설정에서 사용자를 변경할 수 있고 자주 변경할 수 있습니다.
유닉스는 한도 내에서 사용자에게 순종하도록 설계되었습니다.
NB : Bash는 시스템 의 유일한 쉘 이 아닙니다 . / bin / sh 심볼릭 링크가 실제로 가리키는 것에주의를 기울이십시오. 많은 시스템에서 이것은 실제로 대시 일 수 있습니다 (기본적으로 특별한 호출없이) POSIXLY 정확합니다. 따라서 두 기본값을 모두 수정해야합니다 . 그렇지 않으면 / bin / sh로 시작하는 스크립트가 전역 기본값을 상속하지 않습니다. 마찬가지로, bash 만하는 구문을 피하십시오. 편집 할 때 이해avoiding bashisms
.