2009-04-19 9 views

risposta

47

Mentre la risposta di lhunath mi spingeva nella giusta direzione, zsh non sembra dare origine allo .profile automaticamente. Molte delle buone informazioni su questo argomento possono essere trovate su this superuser post.

L'adattamento sto usando è mettere alias e funzioni comuni a .profile e manualmente approvvigionamento modo seguente:

.bashrc

source ~/.profile

.zshrc

[[ -e ~/.profile ]] && emulate sh -c 'source ~/.profile'

+1

Sì, penso che questo sia l'approccio migliore. La ringrazio per la risposta! –

21

Non è possibile "esportazione" il tuo .bashrc ad un .zshrc. .bashrc è un file che esegue i comandi bash. .zshrc è un file che esegue i comandi zsh.

Non si può pretendere zsh per essere in grado di eseguire i comandi bash nel .bashrc, così si dovrebbe convertirlo in un nuovo .zshrc invece di cercare di eseguire .bashrc da .zshrc o copiando la prima nella seconda.

Se si desidera un file di inizializzazione della shell comune per tutte le shell; utilizzare .profile (e rimuovere .bashrc e .zshrc). È originato da tutte le shell POSIX. E lì, attenersi alle caratteristiche della shell POSIX solo. Quindi quel codice verrà eseguito in qualsiasi shell POSIX. (Tuttavia, non sono sicuro al 100% che zsh sia conforme a POSIX).

Vedere: http://mywiki.wooledge.org/DotFiles.

Anche se - e mi piacerebbe prima letto male questa parte della tua domanda - non si dovrebbe verificarsi errori da bash quando si esegue il tuo .bashrc a meno che non si mette zsh comandi in là. Hai fatto? Quali errori stai ottenendo? Mi sembra che tu abbia aggiunto il codice zsh nel tuo .bashrc e bash (ovviamente) non capisco.

A parte, ojblass cerca di rendere un punto di portabilità che riesce solo in parte. zsh è una grande shell (anche se non ho avuto gli onori di me stesso), ma durante la scrittura degli script; Ti consigliamo di farlo con #!/usr/bin/env bash invece. Principalmente solo per i tuoi (e alla fine, le persone che condividi con loro) per la portabilità.

+0

Guarda lo stament "Ho messo il mio .bashrc direttamente sul mio .zshrc, e ha causato un sacco di errori quando provo a usare di nuovo Bash." ora pensa per un momento cosa potrebbe causare quello ... e poi riformulare il tuo post. – ojblass

+0

@ojblass: Giusto; ho letto male la domanda – lhunath