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.
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).
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.
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.
Antworten:
Während lhunaths Antwort mich in die richtige Richtung drängte, scheint zsh nicht
.profile
automatisch 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
.profile
und sie manuell wie folgt zu beschaffen:In
~/.bashrc
:source ~/.profile
In
~/.zshrc
:[[ -e ~/.profile ]] && emulate sh -c 'source ~/.profile'
emulate
ist ein eingebauter zsh-Befehl. Richten Sie mit einem einzigen Argument zsh-Optionen ein, um die angegebene Shell so weit wie möglich zu emulieren.quelle
Sie können Ihre nicht in eine " exportieren " . ist eine Datei, die Befehle ausführt. ist eine Datei, die Befehle ausführt.
.bashrc
.zshrc
.bashrc
bash
.zshrc
zsh
Sie können nicht erwarten
zsh
können , die ausgeführt werdenbash
Befehle in.bashrc
, so dass Sie sie in eine neue umwandeln sollte ,.zshrc
anstatt zu versuchen zu laufen.bashrc
aus.zshrc
oder Kopieren der ersteren in die letztere.Wenn Sie eine gemeinsame Shell-Initialisierungsdatei für alle Ihre Shells wünschen; benutze
.profile
(und entferne.bashrc
und.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, obzsh
POSIX-konform ist).Sehen: http://mywiki.wooledge.org/DotFiles .
Obwohl - und ich würde diesen Teil Ihrer Frage zuerst falsch verstehen - keine Fehler
bash
beim Ausführen auftreten sollten, es.bashrc
sei denn, Sie geben dortzsh
Befehle ein. Hast du? Welche Fehler bekommen Sie? Klingt für mich so, als hätten Siezsh
Code zu Ihrem hinzugefügt.bashrc
undbash
(offensichtlich) nicht verstanden.Nebenbei
ojblass
versucht, einen Punkt der Portabilität zu machen, der nur teilweise gelingt.zsh
ist 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 bash
stattdessen 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.quelle