답변:
글로벌 ( /etc/environment
, /etc/profile
) 또는 사용자 별 ( ~/.profile
, ~/.bashrc
) 여부에 관계없이 이러한 구성 파일 은 다음 로그인 / 세션에서만 처리됩니다.
글로벌 파일은 모든 사용자 (그냥 루트)에 적용 ...하지만 당신은 환경에 반영 변경 사항을 확인하려면 로그인 세션을 다시 시작해야합니다. 이것은 su
관찰 한대로 호출 하거나 로그 아웃 / 로그인 또는 재부팅하여 발생할 수 있습니다 . 당신은 할 수 su
루트가 아닌 사용자에게 당신은 또한 환경 변화를 볼 것입니다.
전역 환경을 선택하기 위해 다시 부팅하거나 다시 로그인 해야하는 이유는 환경이 상위 프로세스에서 상속되고 다른 모든 프로세스의 루트 프로세스가 로그인 쉘이기 때문에 로그인 쉘이 없기 때문입니다. 환경 ... 그런 다음 로그인 셸 내에서 프로세스가 시작되지 않습니다. 물론 개별 프로세스를 시작할 때 환경을 설정 / 업데이트 할 수 있지만 로그인 쉘에 대한 환경을 설정하고 변경 사항을 보려면 모든 하위 프로세스를 다시 시작해야합니다.
다른 언급 한 사람, 당신은에 대한 변경을위한 재부팅 또는 로그 아웃 / 로그인이 필요합니다 /etc/profile
, /etc/profile.d/*.sh
그리고 /etc/environment
뽑힐 수 있습니다.
이러한 파일은 전역 환경을 지정하지만 로그인시 한 번만 실행되므로 기존 로그인 / 세션에 해당 파일의 변경 사항이 반영되지 않기 때문입니다. 재부트는 모든 사람의 로그인을 "재설정"하여 새 환경을 선택하도록합니다.
자체 로그인 세션 source /etc/profile
에서 재부팅이나 로그 아웃 / 로그인없이 변경 사항을 적용 할 수 있지만, 이는 자신의 세션과 세션 내에서 실행중인 새 프로세스에만 영향을 미칩니다.
주 에서 어떤 변수 보간이없는 것 또한 /etc/environment
(이 스크립트 아니다) 당신이 좋아하는 물건을 할 수 PATH="$PATH:/my/custom/path"
있다.
참고 또한 그 /etc/profile
와 /etc/profile.d/*.sh
(당신이 데몬 프로세스에 대한 당신의 로그인 쉘 외부 실행 환경 변수를 설정하려는 경우 예) 만 로그인 세션에 대한 실행 환경이 구성되도록 시스템이 아닌 로그인 계정을 사용할 수 없을 것입니다.
주bashrc
전체의 로그인 쉘하지만 bash는 쉘과 하위 프로세스에 대한 환경을 설정하는 데 유용하지 않습니다 ... 그래서 위해 당신은 아마 당신의 환경 설정을 넣을 진정한 "글로벌"또는 "사용자 글로벌" /etc/profile
또는 /etc/profile.d/my-custom-env.sh
나 ~/.profile
. 다른 셸 (예 : zsh)에는 자체 구성 파일이 있으므로 bashrc의 비 bash 특정 환경 구성은 셸을 전환 할 때 (또는 다른 셸을 사용하는 시스템의 다른 사용자가있는 경우) 혼란을 유발합니다.
새 프로그램을 설치하는 것이 일반적인 문제이며 제대로 실행 되려면 환경을 지정해야합니다. 글로벌 환경이 하나의 해답이지만 서버 및 자동 프로비저닝 / 구성 사용 사례에 적합하지 않은 재부팅이 필요한 경우가 종종 있습니다. 이것이 실제로 시스템의 모든 사용자와 프로그램에 필요한 변수인지 아니면 특정 사용자 나 프로그램에 제공해야하는 변수인지 스스로에게 자문해야합니다.
~/.profile
~/.bashrc
대화식, 로그인 쉘, bash 전용 등에 원하는지 여부에 따라 사용자의 홈 디렉토리에 프로파일 또는 bashrc에 환경을 포함시키는 것을보십시오 (예 :) .
또한 사용자 로그인 세션 내의 모든 프로세스에서 환경 변경 사항을 사용할 수 있으려면 재부팅 또는 로그 아웃 / 로그인이 필요합니다. 사용자는 source ~/.profile
... 단말기 내에서 수행되며 해당 터미널 세션 및 하위 프로세스 내의 환경 만 업데이트 할 수 있습니다. 반드시 사용자의 전체 로그인 환경에 대한 것은 아닙니다.
하나는 명령을 실행할 때 환경을 제공하는 것입니다.
VAR_NAME="VAR VALUE" VAR2_NAME="VAR2_VALUE" /path/to/program --opt1 --op2
당신은 또한 아래 단위 / 서비스 파일의 환경을 지정 할 수 있습니다 systemd 사용하는 경우 [Service]
와Environment=VAR_NAME="VAR VALUE" VAR2_NAME="VAR2_VALUE
이 옵션은 프로그램을 실행할 때마다 환경을 지정해야하기 때문에 복잡하게 느껴질 수 있습니다. 그러나 해당 프로그램에서만 환경이 필요한 경우 ...이 방법이 가장 좋은 방법이므로 익숙해 져야하고 모든 것을 버리지 않아야합니다. bashrc 또는 프로파일 파일로.
systemd 또는 init을 사용하여 환경을 설정하고 프로그램을 실행하지 않는 경우 물론 환경 실행을 포함하여 전체 명령을 저장하는 편의를 위해 bash 스크립트로 프로그램 실행을 래핑 할 수도 있습니다.
/ubuntu//a/247769/824160 을 읽는 것이 좋습니다.