Запуск nano из функции в файле конфигурации (функция в zshrc) не сохраняет изменения

Запуск nano из функции в файле конфигурации (функция в zshrc) не сохраняет изменения

Я использую zsh в качестве оболочки и пытаюсь добиться следующего:

В моем файле .zshrc я хочу иметь функцию, которая изменяет мой .zshrc, сохраняет его и перезагружает.

На данный момент у меня есть функции (в моем файле .zshrc):

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
} 

Когда я вызываю zshrd, он работает. Но когда я вызываю zshed, он не работает. Он открывает файл в nano, но не сохраняет никаких изменений, внесенных в файл, и ничего не фиксирует. Может быть, это как-то связано со stdin/stdout?

У вас есть какие-нибудь соображения, почему? Я открыт для других решений, если я делаю что-то «неправильно».

Спасибо!

решение1

Поправьте меня, если я не правильно вас понял, но вы открываете $HOME/.zshrcс помощью nano, добавляете некоторые изменения и сохраняете. Затем вы пытаетесь добавить и зафиксировать $HOME/config/, но в этом каталоге нет изменений, поэтому никакой фиксации не происходит. Затем вы вызываете zshrdи переопределяете предыдущее измененное $HOME/.zshrcс помощью $HOME/config/.zshrc, которое никогда не изменялось.

Я думаю, вам следует предоставить nano $HOME/config/.zshrcсвой сценарий.

Затем ваша функция изменит $HOME/config/.zshrc, зафиксирует свои изменения, а затем переопределит ваши $HOME/.zshrcновые $HOME/config/.zshrcи перезагрузит их.

Связанный контент