Я использую 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
и перезагрузит их.