Origem .bashrc em zsh sem imprimir qualquer saída

2

No passado, usei consistentemente o bash, porque está em toda parte.
Mas recentemente eu comecei a tentar zsh. Eu não quero desistir de atualizar meu .bashrc fil que é rsync'ed para todos os meus servidores. Então, no meu .zshrc , eu obtive meu antigo .bashrc usando o comando source ~/.bashrc .

Tudo vai bem, exceto toda vez que abro uma nova janela de terminal com zsh.
Há um monte de informações solicitadas na tela. Parece assim:

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:~|⇒

Estas são definições de funções no meu .bashrc. Eles são acionados por source ~/.bashrc no meu arquivo .zshrc .

O que eu quero é que .zshrc forneça meu .bashrc silenciosamente, com todas as saídas stderr e stdout ocultas.

É possível fazer isso? Como?

    
por Zen 30.06.2015 / 10:49

1 resposta

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

Isso diz ao zsh para emular o ksh enquanto ele carrega .bashrc , então, em geral, ele aplica as regras de análise do ksh. O Zsh não tem um modo de emulação bash, o ksh é o mais próximo possível. Além disso, quando uma função definida em .bashrc é executada, o modo de emulação ksh também será ativado durante a avaliação da função.

Espero que isso resolva os erros que você recebe quando o zsh lê seu .bashrc . Se isso não acontecer, deve ser fácil ajustar seu .bashrc para que ele funcione bem em ambos os shells na maior parte. Faça algumas partes condicionais, como configurações de prompt e atalhos de teclado que são radicalmente diferentes.

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

Se você realmente quer esconder toda a saída, você pode redirecioná-la para /dev/null ( source ~/.bashrc >/dev/null 2>&1 ), mas eu não recomendo: você está apenas escondendo erros que indicam que algo não está funcionando, não faz essa coisa funcionar.

    
por 01.07.2015 / 01:22