Estou usando zsh como meu shell e estou tentando conseguir isso:
No meu arquivo .zshrc, quero ter uma função que modifique meu .zshrc, salve-o e recarregue-o.
Até agora tenho funções (no meu arquivo .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
}
Sempre que chamo zshrd, ele funciona. Mas sempre que ligo para zshed, isso não acontece. Ele abre o arquivo no nano, mas não salva nenhuma alteração feita no arquivo e não confirma nada. Talvez tenha algo a ver com stdin/stdout?
Tens alguma ideia do porquê? Estou aberto a outras soluções se estiver fazendo as coisas "da maneira errada".
Obrigado!
Responder1
Corrija-me se não entendi direito, mas você abre $HOME/.zshrc
com nano
, adiciona algumas alterações e salva. Então você tenta adicionar e confirmar $HOME/config/
, mas não há alterações feitas neste diretório, portanto, nenhuma confirmação é feita. Você então chama zshrd
e substitui a alteração anterior $HOME/.zshrc
pela $HOME/config/.zshrc
qual nunca foi alterada.
Eu acho que você deveria ligar nano $HOME/config/.zshrc
em seu script.
Então sua função mudaria o $HOME/config/.zshrc
, confirmaria suas alterações e então substituiria o seu $HOME/.zshrc
pelo novo $HOME/config/.zshrc
e o recarregaria.