과거에는 bash가 어디에나 있기 때문에 항상 bash를 사용해 왔습니다.
하지만 최근에 zsh를 시도하기 시작했습니다. .bashrc
내 모든 서버에 동기화되는 파일 업데이트를 포기하고 싶지 않습니다 . 그래서 나는 .zshrc
명령을 사용하여 오래된 것을 얻었습니다..bashrc
source ~/.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
)로 리디렉션할 수 있지만 권장하지는 않습니다. 무언가가 작동하지 않음을 나타내는 오류를 숨기는 것일 뿐이므로 콘텐츠가 작동하지 않습니다.