Das Ausführen von Nano über eine Funktion in einer Konfigurationsdatei (Funktion in zshrc) speichert keine Änderungen

Das Ausführen von Nano über eine Funktion in einer Konfigurationsdatei (Funktion in zshrc) speichert keine Änderungen

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/.zshrcmit 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 zshrdund überschreiben sie $HOME/.zshrcmit $HOME/config/.zshrc, die nie geändert wurde.

Ich denke, Sie sollten nano $HOME/config/.zshrcIhr Skript aufrufen.

Dann würde Ihre Funktion das ändern $HOME/config/.zshrc, die Änderungen festschreiben und dann Ihr $HOME/.zshrcNeues überschreiben $HOME/config/.zshrcund es neu laden.

verwandte Informationen