개인 환경 변수에 동의

개인 환경 변수에 동의

Unix개인 환경 변수를 설정하는 규칙이 있나요? $HOME/.bash_profile대신 에 넣어야 한다는 내용을 읽었습니다 $HOME/.bashrc. 그럼에도 불구하고 저는 자체 변수를 차별화할 수 있는 방법을 제공하는 것을 고려하고 있습니다. 그래야 잊어버리더라도 설정을 했는지 한눈에 알 수 있어요. 예를 들어, 터미널에서 자동 완성을 수행할 때 C++언어 규칙 중 하나와 마찬가지로 변수가 밑줄이나 빼기 기호 "m"으로 시작하도록 할 수 있습니다. 아마도 절대적인 답은 없을 것이라는 것을 알고 있지만 이를 달성하는 데 도움이 될 수 있는 몇 가지 모범 사례와 규칙을 듣고 싶습니다. 즉, 시스템 환경 변수와 개인 환경 변수를 쉽게 구별할 수 있는 방법을 제공합니다.

답변1

포함된 환경 변수를 설정하는 위치환경 변수를 설정하는 가장 좋은 distro/shell 독립적 방법은 무엇입니까?

이름 지정과 관련하여 환경 변수를 설정하는 주된 이유는 애플리케이션에서 이를 사용하기 때문에 이름을 선택할 수 없기 때문입니다.

환경 변수에는 네임스페이스 개념이 없습니다. 가장 가까운 방법은 일반적으로 형식의 접두사를 선택하는 것입니다 SOMETHING_(즉, 접두사는 밑줄로 끝나고 변수 SOMETHING_FOO, SOMETHING_BAR, ...를 갖습니다). 그러나 대부분의 변수는 특정 애플리케이션에 국한되지 않고 다양한 애플리케이션에 적용됩니다. 변수가 하나의 애플리케이션 내에서만 의미가 있는 경우 일반적으로 명령줄 옵션이어야 합니다. 따라서 네임스페이스가 많이 필요하지 않습니다.

명령줄에서만 사용하기 위해 변수를 정의하는 경우 환경 변수를 사용하는 대신 다음을 사용하세요.껍데기변하기 쉬운. (바라보다bash에서 환경 변수와 내보낸 환경 변수의 차이점) 쉘 스크립트에서 변수를 정의하고 사용하지 않는 경우 export이는 환경 변수가 아닌 쉘 변수이며 정의한 쉘에서만 볼 수 있습니다. 따라서 명령줄에서 사용할 변수를 정의하는 경우:

  • 쉘 대화형 시작 파일( ~/.bashrcbash, ~/.zshrczsh, ~/.config/fish/config.fishfish의 경우)에서 정의하십시오.
  • 그거 하지마 export.
  • 일반적인 규칙이 있습니다. 환경 변수는 모두 대문자이고 쉘 변수는 모두 소문자입니다.

자신이 사용하는 환경 변수와 충돌하지 않는 한 원하는 이름을 선택하세요(환경 변수는 자동으로 쉘 변수로 가져옵니다). 처음에는 밑줄을 사용하지 않는 것이 좋습니다. 밑줄은 bash 및 zsh 완성 시스템에서 내부적으로 사용되기 때문입니다.

답변2

다음은 환경을 설정할 위치에 대한 권장 사항과 설명입니다.

관련 세부사항은 다음과 같습니다.

  • 사용자구성 파일~/.bash_profile, ~/.bash_login, 또는 ~/.profile. 마지막 껍질이 다른 껍질과 겹치기 때문에 처음 두 개 중 하나를 사용하는 것이 좋습니다. 그러나 마지막에 있는 GUI 로그인에 대한 참고 사항을 참조하세요.

  • 사용자.rc 파일~/.bashrc.

  • 하나대화형 로그인 셸(예: 콘솔 로그인 또는 ssh로그인)은 구성 파일만 읽습니다.

  • 비대화형 로그인 셸드물지만 GUI 로그인 중에 실행될 수 있습니다. 어느 쪽이든 Bash 셸인 경우 비대화형 로그인 셸 역할을 하며 구성 파일만 읽습니다.

  • 하나대화형 비로그인 셸(예: XTerm/Konsole의 새 탭)은 rc 파일을 읽습니다.

  • 비대화형 비로그인 쉘(예: 쉘 스크립트) 한 가지 중요한 예외를 제외하고 둘 다 읽히지 않습니다. 에 의해 시작되면 sshrc 파일을 읽습니다.

관련된 예외의 이유 ssh는 ssh()를 통해 스크립트를 실행할 때 로컬 스크립트를 실행할 때와 마찬가지로 ssh $host my_remote_script환경이 (대부분 ) 아직 설정되지 않았기 때문입니다. 따라서 IMO에서는 로컬로 호출된 스크립트와 원격으로 호출된 스크립트가 동일한 환경을 사용하도록 PATH환경을 설정하려는 동기는 예외입니다 .~/.bashrc

이 모든 것을 바탕으로 내 조언은 다음과 같습니다.

  • 구성 파일:

    • .PATH
    • 무조건 rc 파일을 가져옵니다: . ~/.bashrc.
  • RC 파일:

    • 필요에 따라 환경 변수를 설정합니다.
    • 이 파일은 환경이 설정되면 (대화형 비로그인 셸을 통해) 획득됩니다. 그래서 무조건 이렇게 하면 2번 구매 후에 결과가 나올 PATH=$HOME/bin:$PATH수도 있습니다 PATH=$HOME/bin:$HOME/bin:...(이건 버그가 아니라 귀찮은 일입니다). 간단한 해결 방법은 환경 설정을 보호하는 것입니다.

      # ~/.bashrc
      if [ ! "${MY_ENV_SET:-}" ]; then
          PATH=...
          ...
          export MY_ENV_SET=1
      fi
      
    • 대화형 쉘에 대해서만 쉘 세부사항을 정의하십시오.

      ...
      [ "$PS1" ] || return 0
      PS1=<fancy_colored_prompt>
      source ~/.bash_alias
      eval $(dircolors -b ~/.dircolors)
      source /etc/bash_completion
      

그래픽 로그인. 고려해야 할 마지막 중요한 사항은 PATH시작 중에 GUI가 어떻게 설정되는지입니다. 이것가능한이는 Bash를 사용하거나 사용하지 않고 수행할 수 있습니다. 내 경우에는 KDE를 사용하며 시작하는 동안 이 파일을 얻습니다.

# ~/.kde/env/path.sh
# https://userbase.kde.org/Session_Environment_Variables
PATH=$(env -i /bin/bash -lc 'echo $PATH')

이는 rc 파일의 소스이기도 한 빈 환경을 사용하여 (드물게) 비대화형 로그인 Bash 쉘을 호출하며 모든 것이 일관됩니다.

다른 GUI(Gnome?)를 사용하는 경우 PATH부팅 중에 이것이 어떻게 설정되는지 확인해야 합니다. GUI가 소스인 경우 ~/.profile거기에서 rc 파일도 가져와야 합니다.

관련 정보