환경 변수를 /usr/local/bin에 넣는 것이 좋은 생각입니까?

환경 변수를 /usr/local/bin에 넣는 것이 좋은 생각입니까?

aws cfn을 사용하여 ubuntu 인스턴스를 시작하고 있으며 cfn 시작 스크립트에 제공된 변수를 인스턴스의 스크립트에 전달해야 합니다. 예를 들어 "db-server=db-2.domain.com"을 전달할 수 있으며 인스턴스에 이 주소를 알고 싶어하는 여러 스크립트가 있습니다.

현재 나는 /etc/profile.d에 vars를 설정하여 파일을 생성 export하지만 이는 bash가 로그인 셸로 시작된 경우에만 작동합니다. 이는 이러한 변수를 모든 곳에 두기 위해 추가 작업이 필요한 경우입니다.

그래서 대신 /usr/local/bin에 파일을 생성할 수도 있습니다. 예를 들어 콘텐츠를 get-db-host.sh사용하면 echo "db-2.domain.com"변경 없이 각 스크립트에서 해당 파일을 사용할 수 있습니다.

좋은 접근 방식입니까?

답변1

좋은 접근 방식입니까?

나는 당신이 말하는 모든 스크립트가 쉘 스크립트라고 확신합니다. 이 경우 모든 변수를 구성 파일에 넣을 수 있습니다.

db-server=db-2.domain.com

이를 표준 위치(예: /usr/local/etc/myapp/)에 배치하고 다른 스크립트에 소스를 입력합니다.

. /usr/local/etc/myapp

분명히 plain 을 사용할 수도 있습니다 /etc.

답변2

권장되는 방법은 변수를 /etc/environment. 이 파일은 로그인 시 읽혀집니다.우분투 문서):

특정 사용자가 아닌 시스템 전체에 영향을 미치는 환경 변수 설정은 시스템 또는 데스크톱 세션이 로드될 때 실행되는 많은 시스템 수준 스크립트에 배치해서는 안 됩니다.

/etc/environment - 이 파일은 특히 시스템 전체의 환경 변수 설정을 위한 것입니다. 이는 스크립트 파일이 아니며 한 줄에 하나씩 할당 표현식으로 구성됩니다. 특히 이 파일은 시스템 전체의 로케일 및 경로 설정을 저장합니다.

그러니 수정 /etc/environment/하고 추가하세요.

db-server=db-2.domain.com

답변3

나는 그 생각에 반대할 것입니다. 해당 디렉토리는 /usr/local/bin(보통) 특정 패키지의 일부가 아닌 상자에 로컬인 실행 파일을 위한 것입니다.

여러분이 하고 있는 신비한 설정을 만들기보다는 여러분의 작업을 수행해야 할 수 있는 다른 사람이 명백히 알 수 있는 곳에 변수를 배치하십시오.

나는 그것들을 귀하의 디렉토리에 있는 파일에 넣고 $HOME간단히 $HOME/.bashrc.

if [ -f $HOME/.my_aws_env ]; then
    . $HOME/.my_aws_env
fi

아니면 멋지고 힙하게 한 줄로 할 수도 있습니다.

[ -f $HOME/.my_aws_env ] && . $HOME/.my_aws_env

관련 정보