출력을 인쇄하지 않고 zsh에서 .bashrc 소스

출력을 인쇄하지 않고 zsh에서 .bashrc 소스

과거에는 bash가 어디에나 있기 때문에 항상 bash를 사용해 왔습니다.
하지만 최근에 zsh를 시도하기 시작했습니다. .bashrc내 모든 서버에 동기화되는 파일 업데이트를 포기하고 싶지 않습니다 . 그래서 나는 .zshrc명령을 사용하여 오래된 것을 얻었습니다..bashrcsource ~/.bashrc

zsh로 새 터미널 창을 열 때를 ​​제외하고는 모든 것이 순조롭게 진행됩니다.
화면에는 많은 정보 프롬프트가 있습니다. 다음과 같습니다.

pms () {
    if [ -n "$1" ]
    then
        user="$1"
    else
        user="zen"
    fi
    python /Users/zen1/zen/pythonstudy/creation/project_manager/project_manager.py $user show "$2"
}
pmcki () {
    if [ -n "$1" ]
    then
        user="$1"
    else
        user="zen"
    fi
    python /Users/zen1/zen/pythonstudy/creation/project_manager/project_manager.py $user check_in "$2"
}
zen1@bogon:~|⇒

이것은 내 .bashrc의 함수 정의입니다. source ~/.bashrc내 파일에 의해 .zshrc트리거 됩니다 .

내가 원하는 것은 모든 stderr 및 stdout 출력을 숨기고 조용히 .zshrc리소스를 얻는 것 입니다..bashrc

이것이 가능합니까? 어떻게?

답변1

emulate -R ksh -c 'source ~/.bashrc'

이는 zsh가 로드할 때 ksh를 에뮬레이션하도록 지시하므로 .bashrc기본적으로 ksh 구문 분석 규칙을 적용합니다. Zsh에는 bash 에뮬레이션 모드가 없으며 ksh가 가장 가깝습니다. 또한 ksh 에뮬레이션 모드는 정의된 함수를 실행할 때 .bashrc함수 평가 중에 활성화됩니다 .

이것이 zsh 에서 읽는 문제를 해결해주기를 바랍니다 . 그렇지 않은 경우 대부분의 경우 두 쉘 모두에서 잘 작동하도록 .bashrc쉽게 조정할 수 있습니다 . .bashrc완전히 다른 프롬프트 설정 및 키 바인딩과 같은 일부 부분을 조건부로 만들었습니다.

if [[ -z $ZSH_VERSION ]]; then
  bind …
  PS1=…
fi

모든 출력을 정말로 숨기려면 /dev/null( source ~/.bashrc >/dev/null 2>&1)로 리디렉션할 수 있지만 권장하지는 않습니다. 무언가가 작동하지 않음을 나타내는 오류를 숨기는 것일 뿐이므로 콘텐츠가 작동하지 않습니다.

관련 정보