Não deixe esse zsh-hater te derrubar. Zsh é ótimo!
Jeremy Cantrell
Respostas:
110
Embora a resposta de lhunath tenha me empurrado na direção certa, zsh não parece se originar .profileautomaticamente. Muitas informações boas sobre este tópico podem ser encontradas nesta postagem do superusuário .
A adaptação que estou usando é colocar aliases e funções comuns .profilee obtê-los manualmente da seguinte maneira:
Em ~/.bashrc:
source ~/.profile
Em ~/.zshrc:
[[ -e ~/.profile ]] && emulate sh -c 'source ~/.profile'
emulateé um comando zsh embutido. Com um único argumento, configure as opções zsh para emular o shell especificado tanto quanto possível.
Sim, acho que essa é a melhor abordagem. Obrigado pela sua resposta!
Léo Léopold Hertz 준영
a resposta acima está funcionando bem para mim também. mas preciso fazer isso sempre que abrir o terminal zshrc. você pode me dizer como corrigir isso.
theedudecodes
33
Você não pode " exportar " seu .bashrcpara a .zshrc. .bashrcé um arquivo que executa bashcomandos. .zshrcé um arquivo que executa zshcomandos.
Você não pode esperar zshpara ser capaz de executar os bashcomandos em seu .bashrc, então você deve convertê-lo em um novo .zshrcem vez de tentar executar .bashrca partir .zshrcou copiar o anterior para o último.
Se você deseja um arquivo de inicialização de shell comum para todos os seus shells; usar .profile(e remover .bashrce .zshrc). É fornecido por todos os shells POSIX. E aí, atenha-se apenas aos recursos do shell POSIX . Então esse código será executado em qualquer shell POSIX. (Porém, não estou 100% certo de que zshseja compatível com POSIX).
Embora - e eu tenha interpretado mal esta parte da sua pergunta - você não deve ter erros bashao executar o seu, a .bashrcmenos que coloque zshcomandos lá. Você fez? Que erros você está recebendo? Parece-me que você adicionou zshcódigo ao seu .bashrce bash(obviamente) não entende.
Como um aparte, ojblasstenta fazer questão de portabilidade que só funciona parcialmente. zshé um ótimo shell (embora eu não tenha tido as honras), mas ao escrever scripts; Eu recomendo que você faça isso com #!/usr/bin/env bash. Principalmente apenas para você (e, eventualmente, as pessoas que você compartilha com elas), por questão de portabilidade.
Veja a declaração "Coloquei meu .bashrc diretamente em meu .zshrc e isso causou muitos erros quando tento usar o Bash novamente." agora pense por um momento o que causaria isso ... e então reformule sua postagem.
Respostas:
Embora a resposta de lhunath tenha me empurrado na direção certa, zsh não parece se originar
.profile
automaticamente. Muitas informações boas sobre este tópico podem ser encontradas nesta postagem do superusuário .A adaptação que estou usando é colocar aliases e funções comuns
.profile
e obtê-los manualmente da seguinte maneira:Em
~/.bashrc
:source ~/.profile
Em
~/.zshrc
:[[ -e ~/.profile ]] && emulate sh -c 'source ~/.profile'
emulate
é um comando zsh embutido. Com um único argumento, configure as opções zsh para emular o shell especificado tanto quanto possível.fonte
Você não pode " exportar " seu
.bashrc
para a.zshrc
..bashrc
é um arquivo que executabash
comandos..zshrc
é um arquivo que executazsh
comandos.Você não pode esperar
zsh
para ser capaz de executar osbash
comandos em seu.bashrc
, então você deve convertê-lo em um novo.zshrc
em vez de tentar executar.bashrc
a partir.zshrc
ou copiar o anterior para o último.Se você deseja um arquivo de inicialização de shell comum para todos os seus shells; usar
.profile
(e remover.bashrc
e.zshrc
). É fornecido por todos os shells POSIX. E aí, atenha-se apenas aos recursos do shell POSIX . Então esse código será executado em qualquer shell POSIX. (Porém, não estou 100% certo de quezsh
seja compatível com POSIX).Vejo: http://mywiki.wooledge.org/DotFiles .
Embora - e eu tenha interpretado mal esta parte da sua pergunta - você não deve ter erros
bash
ao executar o seu, a.bashrc
menos que coloquezsh
comandos lá. Você fez? Que erros você está recebendo? Parece-me que você adicionouzsh
código ao seu.bashrc
ebash
(obviamente) não entende.Como um aparte,
ojblass
tenta fazer questão de portabilidade que só funciona parcialmente.zsh
é um ótimo shell (embora eu não tenha tido as honras), mas ao escrever scripts; Eu recomendo que você faça isso com#!/usr/bin/env bash
. Principalmente apenas para você (e, eventualmente, as pessoas que você compartilha com elas), por questão de portabilidade.fonte