Ich verwende zsh als meine Shell und versuche Folgendes zu erreichen:
In meiner .zshrc-Datei möchte ich eine Funktion haben, die meine .zshrc ändert, speichert und neu lädt.
Bisher habe ich zwei Funktionen (in meiner .zshrc-Datei):
function zshrd(){
cp $HOME/config/.zshrc $HOME/
source $HOME/.zshrc
}
function zshed(){
message=${1:-Automated message}
nano $HOME/.zshrc
git add $HOME/config/
git commit -m $message
zshrd
}
Wenn ich zshrd aufrufe, funktioniert es. Aber wenn ich zshed aufrufe, funktioniert es nicht. Es öffnet die Datei in nano, speichert aber keine an der Datei vorgenommenen Änderungen und führt keine Commit-Operationen aus. Vielleicht hat es etwas mit stdin/stdout zu tun?
Haben Sie eine Idee, warum? Ich bin offen für andere Lösungen, wenn ich Dinge „falsch“ mache.
Danke!
Antwort1
Korrigieren Sie mich, wenn ich Sie falsch verstehe, aber Sie öffnen $HOME/.zshrc
mit nano
, nehmen einige Änderungen vor und speichern. Dann versuchen Sie hinzuzufügen und zu bestätigen, $HOME/config/
aber in diesem Verzeichnis wurden keine Änderungen vorgenommen, sodass kein Bestätigen erfolgt. Sie rufen dann die vorherige Änderung auf zshrd
und überschreiben sie $HOME/.zshrc
mit $HOME/config/.zshrc
, die nie geändert wurde.
Ich denke, Sie sollten nano $HOME/config/.zshrc
Ihr Skript aufrufen.
Dann würde Ihre Funktion das ändern $HOME/config/.zshrc
, die Änderungen festschreiben und dann Ihr $HOME/.zshrc
Neues überschreiben $HOME/config/.zshrc
und es neu laden.