Я использую 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 ответ1

0

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

Я думаю, что вы должны вызвать nano $HOME/config/.zshrc в вашем скрипте.

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

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .