systemd를 사용할 때 ~/.profile 또는 ~/.bashrc에서 환경 변수를 선언해야 합니까?

systemd를 사용할 때 ~/.profile 또는 ~/.bashrc에서 환경 변수를 선언해야 합니까?

내가 보기엔 좋아 보이는데environment.d~/.config/environment.d/*.conf더 이상 등에서 환경 변수를 선언하지 않아도 되므로 ~/.bashrc이제 ~/.profile환경 변수가 소스로 제공됩니다 . 그 외에 다른 이유가 없다면 이러한 선언은 쉘별 구문으로 작성할 수 있습니다.

이 가정이 맞나요? 쉘에 특정하지 않은 환경 변수를 쉘 rc파일이나 환경 변수가 있는 시스템에 넣어야 할 이유가 있습니까 ~/.profile?

답변1

이러한 파일은 다양한 용도로 사용되지만 여전히 보완적입니다.

  • environment.d정의시스템 사용자 서비스 변수;
  • .bashrc, 변수를 정의하는 경우 Bash의 로그인이 아닌 대화형 인스턴스에 대해 변수를 정의합니다.
  • .profile, 변수를 정의하는 경우 Bash(및 기타 쉘)의 대화형 로그인 인스턴스에 대해 정의됩니다.

.bashrc따라서 변수를 설정하면 .profile해당 셸 인스턴스에 해당 변수가 설정된다는 것이 보장됩니다. 파일에 변수를 설정하면 environment.d쉘이 포함되거나 포함되지 않을 수 있는 해당 사용자 서비스 인스턴스에 변수가 설정된다는 것을 보장합니다(다른 중개자가 있을 수 있음, 참고자료 참조 sshd).

내가 본 또 다른 차이점은 변경 사항이 이후에 실행되는 모든 셸에 적용 .bashrc된다는 것입니다 .profile. 변경 사항은 사용자 세션 및 관련 서비스가 다시 로드되거나 다시 시작될 때만 적용됩니다 environment.d.

~처럼무루environment.d파일의 기능이 쉘 초기화 스크립트보다 더 제한적이라는 것이 주석에서 언급되었습니다 .

관련 정보