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

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

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

현재는 /etc/profile.d에 vars를 설정하는 파일을 생성 export하지만 이는 bash가 로그인 셸로 시작된 경우에만 작동하므로 이러한 변수를 어디에서나 사용할 수 있도록 하려면 추가 단계를 수행해야 합니다.

그래서 나는 예를 들어 콘텐츠 get-db-host.sh로 /usr/local/bin에 파일을 생성하여 echo "db-2.domain.com"모든 스크립트가 아무런 변경 없이 사용할 수 있을 것이라고 생각했습니다.

이것이 좋은 접근 방식입니까?

답변1

이것이 좋은 접근 방식입니까?

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

db-server=db-2.domain.com

표준 위치(예: )에 배치 /usr/local/etc/myapp/하고 다른 스크립트에서 가져옵니다.

. /usr/local/etc/myapp

/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

관련 정보