여러 .zshrc를 사용하는 방법은 무엇입니까?

여러 .zshrc를 사용하는 방법은 무엇입니까?

다른 zshrc를 사용하고 변수를 저장하고 로드하는 단일 파일을 사용하여 하나를 선택하고 싶습니다. 찾아보았지만 iTerm2만 해당됩니다. 어떤 지원이라도 감사하겠습니다. 감사해요.

답변1

나는 Amint가 문서화한 것과 비슷한 일을 했습니다. 이것은 bash용이지만 Fish에서도 동일한 작업을 수행했으며 분명히 zsh에서도 작동합니다.

내 .bashrc가 다루기 어려워져서 여러 라이브러리(프롬프트 함수, 별칭, 다른 명령을 래핑하는 함수 등)로 분할하고 사용 중인 컴퓨터에 따라 개별적으로 작업했습니다.

if [[ -d ~/.bash.d ]]; then
    shopt -s nullglob
    for file in ~/.bash.d/*.bash; do
        source "$file"
    done
    if [[ -d ~/.bash.d/"$(hostname)" ]]; then
        for file in ~/.bash.d/"$(hostname)"/*.bash; do
            source "$file"
        done
    fi
    shopt -u nullglob
    unset file
fi

따라서 새로운 것을 생성하면 적절한 디렉터리에 넣을 수 있으며 다음 bash 세션에서 활성화됩니다.

답변2

(Bash 및 .*rc 파일이 있는 모든 쉘에서도 가능합니다.)

이를 위해 다음과 같은 디렉터리 설정을 지정할 수 있습니다.

~/
 .zshrc (main rc to choose profile)
 .zshenv (sources each rc)
 .zsh/profiles/ (rcs)
              zshrc1.zsh
              zshrc2.zsh
              ... 

먼저 zshrc 시작 부분에 다음을 추가합니다.

# Chooses zshrc1.
RC1_ENABLE="false"

# Chooses zshrc2.
RC2_ENABLE="false"

# Paste and edit to your likings.
source $HOME/.zshenv

그런 다음 .zshenv 파일을 만들고 다음 콘텐츠를 추가합니다.

if [[ "$RC1_ENABLE" == "true"  ]]; then
  echo "{zshenv} Setting RC1 up with ZSH."
  source "$HOME/.zsh/profiles/zshrc1.zsh"
fi

if [[ "$RC2_ENABLE" == "true" ]]; then
  echo "{zshenv} Setting RC2 up with ZSH."
  source "$HOME/.zsh/profiles/zshrc2.zsh"
fi

그런 다음 .zsh/profiles 디렉터리를 만듭니다. 하지만 이것은 당신이 원하는 무엇이든 될 수 있습니다.

그런 다음 zshenv 파일에 추가한 이름으로 RC를 추가합니다.

그런 다음 기본 zshrc로 돌아가서 다음 줄 중 하나를 편집하여 RC를 활성화합니다.

# Chooses zshrc1.
RC1_ENABLE="false"

# Chooses zshrc2.
RC2_ENABLE="true"

그런 다음 새 zsh 세션을 엽니다.

{zshenv} Setting RC2 up with ZSH.
user@hostname ~ $

훌륭해! 이제 RC 간에 전환할 수 있습니다. 동시에 두 개의 RC를 사용할 수도 있습니다. 테마(Oh My ZSH!, Prezto 또는 bash(가능), Bash-it를 통해 수행하는 경우)를 사용하는 경우 다른 테마를 사용할 때 주의하세요.

이 작업을 수행하려는 이유는 개인, 직장 및 학교 메시지 때문입니다. 테마를 사용하고 싶을 수도 있지만 원래의 이전 호스트 이름%을 고수하고 싶을 수도 있습니다. 다른 별칭을 사용할 수도 있습니다. 독립된 기능, 예비 RC, 모든 것이 가능합니다.

다양한 프롬프트를 사용해 보세요.

관련 정보