Wie können Sie Ihre .bashrc nach .zshrc exportieren?

85

Ich versuche, von Bash nach zsh zu ziehen.

Ich habe meine .bashrc direkt in meine .zshrc gestellt und es hat viele Fehler verursacht, wenn ich versuche, Bash erneut zu verwenden.

Wie können Sie Ihre .bashrc nach .zshrc exportieren?

Léo Léopold Hertz 준영
quelle
19
Lass dich von diesem Zsh-Hasser nicht unterkriegen. Zsh ist großartig!
Jeremy Cantrell

Antworten:

110

Während lhunaths Antwort mich in die richtige Richtung drängte, scheint zsh nicht .profileautomatisch zu beschaffen . Viele gute Informationen zu diesem Thema finden Sie in diesem Superuser-Beitrag .

Die Anpassung, die ich verwende, besteht darin, allgemeine Aliase und Funktionen einzufügen .profileund sie manuell wie folgt zu beschaffen:

In ~/.bashrc:

source ~/.profile

In ~/.zshrc:

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

emulateist ein eingebauter zsh-Befehl. Richten Sie mit einem einzigen Argument zsh-Optionen ein, um die angegebene Shell so weit wie möglich zu emulieren.

Ryne Everett
quelle
2
Ja, ich denke, das ist der beste Ansatz. Vielen Dank für Ihre Antwort!
Léo Léopold Hertz 준영
Die obige Antwort funktioniert auch für mich gut. Aber ich muss dies jedes Mal tun, wenn ich das zshrc-Terminal öffne. Kannst du mir sagen, wie ich das korrigieren soll?
Thedudecodes
32

Sie können Ihre nicht in eine " exportieren " . ist eine Datei, die Befehle ausführt. ist eine Datei, die Befehle ausführt..bashrc.zshrc.bashrcbash.zshrczsh

Sie können nicht erwarten zshkönnen , die ausgeführt werden bashBefehle in .bashrc, so dass Sie sie in eine neue umwandeln sollte , .zshrcanstatt zu versuchen zu laufen .bashrcaus .zshrcoder Kopieren der ersteren in die letztere.

Wenn Sie eine gemeinsame Shell-Initialisierungsdatei für alle Ihre Shells wünschen; benutze .profile(und entferne .bashrcund .zshrc). Es wird von allen POSIX-Shells bezogen. Halten Sie sich dort nur an die Funktionen der POSIX-Shell . Dann wird dieser Code in jeder POSIX-Shell ausgeführt. (Ich bin mir jedoch nicht 100% sicher, ob zshPOSIX-konform ist).

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

Obwohl - und ich würde diesen Teil Ihrer Frage zuerst falsch verstehen - keine Fehler bashbeim Ausführen auftreten sollten, es .bashrcsei denn, Sie geben dort zshBefehle ein. Hast du? Welche Fehler bekommen Sie? Klingt für mich so, als hätten Sie zshCode zu Ihrem hinzugefügt .bashrcund bash(offensichtlich) nicht verstanden.

Nebenbei ojblassversucht, einen Punkt der Portabilität zu machen, der nur teilweise gelingt. zshist eine großartige Shell (obwohl ich selbst nicht die Ehre hatte), aber beim Schreiben von Skripten; Ich würde empfehlen, dass Sie dies #!/usr/bin/env bashstattdessen tun . Meistens nur für Ihre eigenen (und letztendlich für die Personen, die Sie mit ihnen teilen), um die Portabilität zu gewährleisten.

lhunath
quelle
Schauen Sie sich das Stament an. "Ich habe meine .bashrc direkt in meine .zshrc gelegt, und es hat viele Fehler verursacht, wenn ich erneut versuche, Bash zu verwenden." Denken Sie jetzt einen Moment darüber nach, was das verursachen würde ... und formulieren Sie dann Ihren Beitrag neu.
Ojblass