변수를 설정하고 읽는 가장 좋은 방법

변수를 설정하고 읽는 가장 좋은 방법

Linux의 여러 서비스와 애플리케이션에서 사용하려면 6개의 변수를 설정해야 합니다. 지금까지 환경 변수를 사용해 왔지만 여러 사용자에 걸쳐 이를 수정하는 것이 매우 복잡하다는 것을 알았습니다. 동시에 모든 사용자가 전역적으로 사용되는 변수를 수정할 수 있기를 바랍니다.

지금까지 내 솔루션은 SQLite를 사용하는 것이었지만 서비스 데몬에서 변수를 설정하려고 할 때 약간 혼란스러워 보입니다.

따라서 질문은 모든 사용자가 변경할 수 있는 전역 환경 변수를 사용하는 것이 가능하거나 현실적입니까, 아니면 SQLite와 같은 데이터베이스 솔루션 사용을 고려해야 합니까?입니다.

예를 들어 변수가 있는 경우 IP_RECIPIENT시스템의 모든 사용자는 해당 변수에 액세스하고 설정해야 합니다. 변경된 경우 모든 사용자가 변경 사항을 읽을 수 있어야 합니다. 즉, 변경 사항도 로컬이 아닌 전역적이어야 합니다.

또한 Arch Linux ARM에서 전역 환경 변수를 사용하는 모범 사례는 무엇입니까?

답변1

간단한 해결책은 이러한 변수를 파일에 설정하고 파일을 전역적으로 쓰기 가능하게 만드는 것입니다 /etc/bash.bashrc. 이렇게 하면 모든 사용자가 변수를 사용할 수 있고 소스 파일의 모든 변경 사항은 재부팅 후에도 유지되며 모든 사용자에게도 사용할 수 있습니다. 새로운 쉘이 시작되었습니다. 열려 있는 쉘의 값은 업데이트되지 않습니다.

  1. 변수 정의가 포함된 파일을 생성하고 읽을 수 있도록 설정

    printf "%s=%s\n%s=%s\n" "var1='foo'" "var2='bar'" | sudo tee /etc/variables
    sudo chmod a+w /etc/variables
    

    그러면 다음 이름의 파일이 생성됩니다 /etc/variables.

    var1='foo'
    var2='bar'
    
  2. /etc/bash.bashrc파일의 소스로 만들기 위해 편집하세요 .

    sudo printf "\n## Source global variables\n. /etc/variables\n" | 
        sudo tee -a /etc/bash.bashrc
    

이 파일의 모든 변경 사항은 이제 새로운 대화형 비로그인 셸에 반영됩니다.


오픈 셸을 사용하더라도 즉시 상속해야 하는 경우 bash의 PROMPT_COMMAND변수를 사용할 수 있습니다.

   PROMPT_COMMAND
          If set, the value is executed as a command prior to issuing each
          primary prompt.

다음 줄을 편집 /etc/profile하고 추가하세요.

PROMPT_COMMAND='. /etc/variables'

이 작업이 완료되면 /etc/variables파일의 모든 변경 사항은 각 프롬프트가 표시되기 전에 파일을 가져오기 때문에 모든 쉘에서 즉시 사용할 수 있습니다. 이 내용은 사용자가 다시 로그인한 후에만 적용되므로 /etc/profile다시 읽어야 합니다 .

관련 정보