Manter meu perfil de zsh ou bash sincronizado em todas as minhas máquinas

5

Eu trabalho em várias máquinas diferentes, todas elas * nix. Eu tenho um monte de coisas específicas que eu gosto do meu shell para, ou o prompt de aparência, ou aliases, etc, etc. Tenho certeza que todos vocês lidam com isso também.

O que você acha que é a melhor maneira de manter as cascas das minhas máquinas agindo da mesma forma?

Primeiramente, estou ciente de que máquinas diferentes precisarão de caminhos diferentes para as bandejas e outras diferenças, então minha primeira inclinação é incluir apenas um arquivo no final do meu perfil, esse é o que vamos manter em sincronizar.

Qual é a melhor maneira de manter os arquivos sincronizados? Eu posso colocar o arquivo em um sistema remoto, e talvez usar o git, para empurrar, depois puxar minhas alterações de vez em quando. No entanto, o Rsync não é mais adequado para isso?

    
por JP Silvashy 15.06.2010 / 06:49

2 respostas

15

É assim que eu faço:

  1. Eu nunca coloquei conteúdo real nos arquivos ~/.bashrc ou ~/.bash_profile , em vez disso, esses arquivos são apenas links simbólicos para os arquivos de configuração reais mantidos em um subdiretório na minha pasta pessoal, por exemplo ~/dotfiles/bashrc e ~/dotfiles/bash_profile .

  2. Eu mantenho a pasta ~/dotfiles sob controle de origem usando o Git e hospedada no GitHub.com

  3. Quando eu instalo um novo sistema, basta clonar o repositório do GitHub em uma nova pasta local ~/dotfiles e criar todos os links simbólicos (atualmente a mão, embora essa etapa deva ser fácil de automatizar).

  4. Eu uso esse mesmo procedimento para outros arquivos de configuração, como .hgrc (para o Mercurial), .vimrc e vários outros.

  5. Sempre que eu edito um dos arquivos de configuração, acabo de confirmar e enviar para o GitHub e, em seguida, puxar todas as outras máquinas.

Isso ainda é um pouco trabalhoso e manual, mas eu estou feliz com isso.

Este é o conteúdo atual da minha pasta ~/dotfiles :

~/dotfiles
|-- bash
|   |-- aliases
|   |-- config
|   |-- env
|   '-- promptcolors
|-- bash_profile
|-- bashrc
|-- gitconfig
|-- gvimrc
|-- hg-templates
|   |-- map-cmdline.dlog
|   |-- map-cmdline.nlog
|   |-- map-cmdline.sglog
|   '-- map-cmdline.slog
|-- hgrc
|-- ssh
|   '-- config
|-- vim
|   |-- after
|   |-- colemak-mappings.vim
|   |-- colors
|   |-- doc
|   |-- filetype.vim
|   |-- ftplugin
|   '-- plugin
'-- vimrc

Eu roubei essa idéia do ótimo screencast da Peepcode Advanced Command Line (valeu $ 9 em minha opinião).

E aqui é onde eu mantenho meu repositório GitHub, caso você queira dar uma olhada. Não espere nada de grande interesse, sou apenas um novato na linha de comando / bash.

link

    
por 15.06.2010 / 08:08
1

Existem várias ferramentas diferentes que atingirão esse objetivo

Ou veja a lista grande de todas as coisas relacionadas a arquivos pontuais no link

(Divulgação completa: Eu sou o autor original do Hermit e ainda um dos principais mantenedores)

    
por 06.04.2014 / 01:47

Tags