web-dev-qa-db-fra.com

Comment pouvez-vous exporter votre .bashrc vers .zshrc?

J'essaie de passer à zsh depuis Bash.

J'ai mis mon .bashrc directement dans mon .zshrc, et cela a causé beaucoup d'erreurs lorsque j'essaie de réutiliser Bash.

Comment pouvez-vous exporter votre .bashrc vers .zshrc?

Alors que la réponse de lhunath m'a poussé dans la bonne direction, zsh ne semble pas source .profile automatiquement. Beaucoup de bonnes informations sur ce sujet peuvent être trouvées sur ce post superutilisateur .

L'adaptation que j'utilise consiste à mettre des alias et des fonctions communs dans .profile et en les approvisionnant manuellement comme suit:

. bashrc

source ~/.profile

. zshrc

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

72
Ryne Everett

Vous ne pouvez pas " exporter" votre .bashrc à un .zshrc. .bashrc est un fichier qui exécute les commandes bash. .zshrc est un fichier qui exécute les commandes zsh.

Vous ne pouvez pas vous attendre à ce que zsh puisse exécuter les commandes bash dans votre .bashrc, vous devez donc le convertir en un nouveau .zshrc au lieu d'essayer d'exécuter .bashrc de .zshrc ou en copiant le premier dans le second.

Si vous voulez un fichier d'initialisation Shell commun pour tous vos shells; utilisation .profile (et supprimez .bashrc et .zshrc). Il provient de tous les shells POSIX. Et là, respectez uniquement les fonctionnalités du shell POSIX . Ensuite, ce code s'exécutera dans n'importe quel shell POSIX. (Cependant, je ne suis pas sûr à 100% que zsh est compatible POSIX).

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

Bien que - et j'aurais d'abord mal lu cette partie de votre question - vous ne devriez pas rencontrer d'erreurs de bash lors de l'exécution de votre .bashrc sauf si vous y mettez des commandes zsh. As tu? Quelles erreurs obtenez-vous? Cela me semble avoir ajouté du code zsh dans votre .bashrc et bash (évidemment) ne comprend pas.

En passant, ojblass essaie de faire un point de portabilité qui ne réussit que partiellement. zsh est un excellent Shell (même si je n'ai pas eu les honneurs moi-même), mais lors de l'écriture de scripts; Je vous recommande de le faire avec #!/usr/bin/env bash au lieu. Surtout juste pour votre propre (et éventuellement, les personnes que vous partagez avec eux) pour des raisons de portabilité.

25
lhunath