dotfiles 관리하기

김우잉·2021년 2월 14일
0

컴퓨터를 오래

사용하다보면 새로운 컴퓨터를 사고 싶다는 생각이 가끔 든다. 그런데 문제가 있다. 내가 지금 쓰고 있는 컴퓨터에 생각보다 많은 커스텀 설정을 해 놓았다. 그럼 새로운 기기를 사면 처음부터 설정을 다 해줘야겠네? 아서라, 언제 다 하냐, 너무 귀찮다. 그냥 쓰던 거 쓸래. 이런 식으로 생각이 흘러간다. 마침 돈도 없고

다행히도 맥OS에는 전 컴퓨터의 모든 데이터와 세팅을 그대로 새 기기에서 동기화해주는 기능이 있다. 번거로운 작업을 할 필요 없이, 아이클라우드에 로그인 하고 동기화 작업을 거치기만 하면 설정이 완료된다. 와 맥 편하다! 윈도우도 당연히 되겠지? 안 쓴지 오래돼서 모른다. 아 몰라 애플 최고

근데 사실 이것만으로는 부족할 수도 있다. 사실 내가 하려는게 기기를 업그레이드하는게 아니라면? 가령 AWS에서 우분투 가상머신을 대여했는데, 내가 원래 맥에서 쓰던 환경설정을 하나 하나 다 해줘야 하는 상황이라면?

결론부터 말하자면, dotfiles를 잘 관리하면 된다.

그래서 dotfiles가 뭔데?

dotfiles란 말 그대로 dot(.)으로 시작하는 file들 — 주로 환경설정을 담고 있는 파일들 — 을 말한다.
.vimrc 또는 .gitconfig 등이 그 예시다.

커스터마이징을 좋아하는 사람이라면 공감할 거다. 이게 처음 설정할 때는 신나서 이것저것 만져보게 된다. 몇 시간의 삽질을 거치면 또 결과물도 꽤 괜찮다. 가령 이런 거다. vim 에디터는 있는 그대로 쓰면 못생겼다. 예시를 보자.

와! 못생겼다

syntax highlighting도 없고, line 번호도 없고, 플러그인도 하나도 없고, 그냥 음... 못생겼다. 이건 못 쓰겠다 싶을 정도다.

자 그럼 커스텀 .vimrc를 적용시키면 어떻게 될까?

와! 알록달록하다. 예쁘다!

줄마다 숫자도 있네!! 이것저것 다른 것도 표시해준다!!!!

뭐 이런 거다. 나는 vim을 주 에디터로 사용하지 않아서 꼭 필요한 설정만 최소한으로 해 놨다. 아마 사람마다 각자 다른 환경설정을 해 줬을 것이다.

참고: 나의 .vimrc

아무튼 커스터마이징이라는게 정말 마약같아서 매우 신나는 일이라서, 이것저것 요리조리 추가하다보면 이런 생각이 든다. 아 이거 다른 기기에서는 언제 또 설정하고 앉아있지? 모든 파일을 복사해줘야하나?

❗️그런데 어머나, 내 커스텀 설정을 편하게 관리할 방법이 있다고 하네? 어떻게?

github

를 사용하면 된다. 설정파일들을 한 데 모아놓은 레포를 파고, 필요한 기기에서 그 레포를 클론해 와서 symlink를 통해 연결해주면 된다. 좀 더 자세히 들어가보자.

1. 홈 디렉토리에서 vscode를 열어보자.

뭐가 엄청 많다

잘 보면 .으로 시작하는 수많은 파일들이 있다. 여기서 우리의 주인공인 .vimrc파일, 그리고 터미널 설정 파일인 .zshrc를 .dotfiles 경로에 넣어보자.

2. 홈에서 .dotfiles 경로를 만들고, 필요한 파일을 옮겨넣자.

.vimrc와 .zshrc를 .dotfiles 경로로 옮겼다. (❗️주의: 복사가 아니다. 이동이다!)

3. github에 .dotfiles를 업로드하자.

하는 김에 .vimrc, .zshrc 말고도 다른 설정파일들을 업로드 해 놓았는데, 그렇게 중요한 건 아니다.

사실 이게 핵심이다. 다음의 커맨드를 터미널에 입력해보자.

ln -s ~/.dotfiles/.zshrc ~/.zshrc
ln -s ~/.dotfiles/.gitconfig ~/.gitconfig

ln -s는 두 경로 사이에 symbolic link(a.k.a. symlink)를 만들어주는 커맨드인데, 이렇게 하면 한 쪽에서 파일을 수정하면 다른 쪽에서도 그 수정사항이 반영된다. 즉 .dotfiles 경로에 있는 파일을 깃허브에서 pull 받은 후 한 번 링크를 걸어놓으면, 추후 한 기기에서 설정 파일을 업데이트 했을 때 다른 기기에서는 pull만 받아주면 모든 변경사항이 반영된다는 말이다. 귀찮게 기기마다 모든 설정 파일을 하나 하나 수정해줄 필요 없이!

해당 설정을 ec2에 적용하는 건 지금은 귀찮으니 다음 포스트에서 언젠가 다뤄보도록 하자. 그럼

참고자료: ~/.dotfiles in 100 Seconds

profile
프론트엔드 개발자입니다.

0개의 댓글