%20%D0%BD%D0%B5%20%D1%81%D0%BE%D1%85%D1%80%D0%B0%D0%BD%D1%8F%D0%B5%D1%82%20%D0%B8%D0%B7%D0%BC%D0%B5%D0%BD%D0%B5%D0%BD%D0%B8%D1%8F.png)
Я использую 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
и перезагрузит их.