서비스를 위해 / etc / environment에서 시작 환경을 읽습니다.


17

에 정의 된 환경 변수를 제공하는 가장 좋은 방법은 무엇입니까 /etc/environment벼락 출세 서비스는?

.스크립트 섹션에서 그것들을 소싱하는 것은 효과가 없다고 생각합니다. 스크립트는 모든 정의 앞에 sh추가가 필요한 스크립트가 실행되기 때문에 export...

답변:


16

마침내 #upstartIRC 채널 에 대한 답변을 받았습니다 . 어느 시점에서, upstart는 적절한 PAM 지원을 받아 /etc/environment스스로 읽 습니다. 그때까지 트릭은 su로 명령을 실행하는 것입니다. suPAM을 사용하고 적절한 환경을 설정합니다. 예:

script 
    exec su root -c /usr/sbin/job_needing_envs
end script

답변을 게시 해 주셔서 감사합니다. 정확히 같은 문제에서 저를 도와 주셨습니다.
Maxim Veksler

오류 :su: must be run from a terminal
Kuf

3

나는 사용하는 경향이있다 eval $(cat /etc/environment | sed 's/^/export /')

의 각 줄을 가져 와서 /etc/environment앞에 추가 export하고 평가합니다.

script
exec /bin/bash <<'EOT'
  eval $(cat /etc/environment | sed 's/^/export /')
  do_what_you_need_to
EOT
end script

왜 스크립트 블록에 내보내기를 직접 넣지 않고 exec를 사용합니까?
Guss

1

이것을 스크립트에 추가하십시오 :

. /etc/environment
export VAR1 VAR2 VAR3

필요한 변수는 "VAR1"스타일 플레이스 홀더 대신 지정됩니다.


2
그렇게하면 수동으로 시작 구성과 / etc / environment를 동기화 상태로 유지해야합니다. 제 생각에 변수를 두 번 정의하는 것보다 낫지는 않습니다.
Nikratio

/etc/environment필요한 모든 변수를 정의하는 데 사용하지는 않습니다 . 정적 파일로 남겨 두십시오. 내 시스템에서는 어쨌든 그것을 사용하는 몇 가지 스크립트 만 찾을 수있었습니다. 비슷한 파일을 작성하고 /etc/environment.local변수 내보내기를 거기에 넣고 해당 파일을 소싱 하십시오. 그런 다음 해당 파일 하나만 유지하면 됩니다.
추후 공지가있을 때까지 일시 중지되었습니다.

/ etc / environment는 pam_env.so (스크립트가 아님)에서 읽으므로 모든 로그인에 사용할 수 있습니다. 불행하게도 upstart로 시작한 프로그램 만 defaulht로 해당 파일에 액세스 할 수 없습니다.
Nikratio
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.