Computer >> 컴퓨터 >  >> 프로그래밍 >> Bash 프로그래밍

Dotfiles 완벽 가이드 – Dotfile이란 무엇이며 Mac과 Linux에서 만드는 방법

Dotfile(닷파일)은 소프트웨어 개발자의 커리어 전반에서 중요한 역할을 하는 파일입니다.

Dotfile을 잘 활용하면 생산성을 크게 높일 수 있을 뿐만 아니라, 한 번 만들어둔 최적화된 개발 환경을 어떤 머신에서든 그대로 재현할 수 있습니다.

이 글에서는 Dotfile의 기본 개념부터 시작해, 시스템에서 Dotfile을 찾는 방법과 간단한 Dotfile을 직접 만드는 방법까지 단계별로 소개합니다. 또한 자신만의 설정을 커스터마이징하고 지식을 확장하는 데 도움이 되는 팁과 리소스도 함께 정리했습니다.

그럼 시작해 보겠습니다!

Dotfile이란 무엇인가?

많은 소프트웨어 프로그램은 자신의 설정 정보를 일반 텍스트 기반의 파일이나 디렉터리에 저장합니다.

Dotfile은 바로 이러한 프로그램들의 설정 파일로, 프로그램이 자신의 기능을 관리하는 데 도움을 줍니다.

Dotfile을 일반 파일과 구분 짓는 특징은 바로 이름 앞에 붙는 접두사입니다. 말 그대로 모든 파일과 디렉터리 이름이 마침표(.)로 시작하기 때문에 'Dotfile'이라고 불립니다.

Unix 계열 운영체제에서는 Dotfile이 기본적으로 운영체제에 의해 숨겨져 있다는 점도 알아두세요.

대표적인 Dotfile 예시

대부분의 프로그램은 기본적으로 홈 디렉터리에 설정을 저장합니다. 여러분이 들어보거나 사용해 본 적 있을 만한 대표적인 Dotfile은 다음과 같습니다.

  • Bash 셸을 사용한다면 .bash_profile.bashrc 파일이 있을 것입니다. 두 파일에는 새 터미널 세션을 시작할 때마다 실행되어 셸을 구성하는 스크립트가 담겨 있습니다.
  • macOS의 새로운 기본 셸인 Zsh를 사용한다면, 셸을 설정하고 커스터마이징하는 .zshrc 파일이 이미 존재하거나 직접 만들었을 것입니다.
  • 커맨드라인 코드 에디터 Vim을 사용한다면 설정 내용을 .vimrc 파일에 저장합니다.
  • 로컬 머신에 Git을 설치하고 설정했다면, 사용자 정보와各종 설정이 담긴 .gitconfig 파일이 생성됩니다.
  • 많은 프로그램은 홈 디렉터리 대신 시스템의 숨겨진 .config 디렉터리(폴더)에 설정을 저장합니다.

Dotfile 찾는 방법

Finder에서 홈 디렉터리의 루트를 열면 대략 다음과 같은 화면이 보입니다.

Dotfiles 완벽 가이드 – Dotfile이란 무엇이며 Mac과 Linux에서 만드는 방법

하지만 실제로는 이보다 훨씬 많은 파일들이 기본적으로 숨겨진 상태로 저장되어 있습니다.

Finder에서 Dotfile을 보려면 홈 디렉터리 루트에서 Command + Shift + . 키를 동시에 누르면 됩니다.

그러면 직접 만든 것도, 소프트웨어 설치 과정에서 생성된 것도 있는 다양한 Dotfile이 나타납니다.

Dotfiles 완벽 가이드 – Dotfile이란 무엇이며 Mac과 Linux에서 만드는 방법

커맨드라인(Dotfile을 가장 많이 다루게 되는 환경)에서 Dotfile을 확인하려면 약간의 추가 작업이 필요합니다.

현재 디렉터리의 모든 파일과 폴더를 나열하는 ls 명령어는 기본적으로 Dotfile을 표시하지 않습니다. 실제로 파일이 존재하더라도 말이죠.

먼저 홈 디렉터리로 이동하세요. 아직 그곳에 있지 않다면 cd 명령어를 사용하면 됩니다.

그다음 '전체(all)'를 의미하는 -a 플래그와 함께 ls 명령어를 실행합니다.

ls -a

파일에 대한 추가 정보까지 확인하고 싶다면, 생성 날짜·시간, 크기 등의 상세 정보를 긴 형식으로 보여주는 -l 플래그를 함께 사용할 수 있습니다.

ls -la

출력 결과에서 현재 홈 디렉터리의 모든 파일과 디렉터리, 즉 숨겨진 항목까지 모두 확인할 수 있습니다.

Dotfiles 완벽 가이드 – Dotfile이란 무엇이며 Mac과 Linux에서 만드는 방법

이때 마침표로 시작하는 모든 파일과 디렉터리가 바로 Dotfile입니다.

왜 Dotfile을 사용해야 할까?

Dotfile은 개개인에게 매우 개인적인 것입니다.

여러분은 상당한 시간을 들여 자신의 작업 흐름, 미적 감각, 선호도에 맞는 설정을 하나하나 다듬어 왔습니다. 그 결과 개인적으로 가장 생산적인 개발 환경을 갖추게 되죠.

그런데 그렇게 공들인 후 새로운, 다른 머신으로 옮겨야 한다면 어떻게 될까요? 처음부터 다시 시작해야 할까요?

정확히 어떤 설정과 명령어를 사용했는지 모두 기억할 수 있을까요?

혹은 두 대의 머신에서 완전히 동일한 환경을 유지하고 싶다면요?

개발자의 주요 목표 중 하나는 반복 작업을 자동화하는 것입니다.

버전 관리를 거쳐 GitHub에 호스팅된 Dotfile 저장소를 만들어 두면, 새 컴퓨터를 세팅할 때 이전 머신과 똑같은 설정을 손쉽게 설치할 수 있어 시간을 크게 절약할 수 있습니다.

이렇게 하면 모든 설정과 환경설정을 다른 머신에서도 재사용 가능하고 일관되게 유지할 수 있습니다.

Dotfile 만드는 방법

Dotfile을 담을 폴더 준비하기

모든 Dotfile을 별도의 폴더에 모아 관리하는 것이 좋은 습관입니다.

설명의 편의를 위해 홈 디렉터리 루트에 폴더를 만드는 예시를 보여드리겠지만, 원하시는 어느 위치에 만들어도 무방합니다.

또한 여기서는 .zshrc.vimrc 파일을 만드는 예시를 다루지만, 같은 원리는 다른 어떤 Dotfile에도 적용됩니다.

홈 디렉터리로 이동한 뒤(cd) 모든 설정 파일을 담을 dotfiles 디렉터리를 생성합니다.

mkdir dotfiles

Dotfile을 만들 때는 touch 명령어에 파일 이름을 인자로 전달하면 됩니다. 파일 이름 앞에는 반드시 마침표를 붙입니다.

dotfiles 디렉터리 안에 .zshrc.vimrc 파일을 만들려면 다음과 같이 입력합니다.

touch ~/dotfiles/.zshrc  ~/dotfiles/.vimrc

만약 해당 파일들이 이미 시스템에 존재하고 이를 dotfiles 디렉터리로 옮기고 싶다면 mv 명령어를 사용하세요.

mv ~/.zshrc ~/dotfiles/

첫 번째 인자는 파일의 현재 경로입니다. 물결표(~)는 홈 디렉터리를 의미하며, 대부분의 숨겨진 설정 파일은 기본적으로 이곳에 위치합니다.

두 번째 인자는 파일을 옮길 목적지 경로입니다. 여기서는 홈 디렉터리 안의 dotfiles 디렉터리로 옮기는 것이죠.

.vimrc 파일도 같은 방식으로 옮길 수 있습니다.

mv ~/.vimrc ~/dotfiles/

파일을 확인해 보겠습니다.

ls -a dotfiles 
.         ..     .vimrc    .zshrc

이제 파일들이 준비되었으니, 원하는 설정들을 자유롭게 추가하면 됩니다.

설정 구성하기

아래는 방금 만든 Dotfile의 설정을 시작하는 데 도움이 될 만한 아이디어들입니다.

Zsh 프롬프트 개인화하기

.zshrc 파일을 준비했다면, 이 파일에 추가하는 모든 내용이 Zsh 셸의 커스터마이징에 반영됩니다.

셸 프롬프트를 꾸며볼 좋은时机입니다. 취향에 따라 다양하게 꾸밀 수 있으며, 시작점으로 삼을 만한 리소스는 다음과 같습니다.

  • 프로처럼 zsh 프롬프트 커스터마이징하기
  • 7단계로 zsh 터미널 멋지게 꾸미기
  • zsh 프롬프트 커스터마이징 추가 아이디어
  • macOS 터미널에서 zsh 프롬프트 커스터마이징하기

Vim 커스터마이징하기

.vimrc 파일을 만들었다면 이제 커맨드라인 텍스트 에디터 Vim을 자유롭게 꾸밀 수 있습니다. 시작하는 데 도움이 되는 리소스 몇 가지를 소개합니다.

  • Vimrc 설정 가이드
  • Vim을 예쁘게 꾸미는 5가지 커스터마이징 팁

앨리어스(Alias)와 함수(Function)란?

작업 흐름을 개선하고 생산성을 높이는 한 가지 방법은 자주 사용하는 명령어를 입력하는 시간을 줄이는 것입니다. 이는 단축키를 만들어 달성할 수 있습니다.

앨리어스는 터미널 명령어의 단축키로, 긴 명령어를 더 짧은 형태로 줄인 것입니다.

개발자라면 Git을 자주 사용하게 되므로, 길고 반복적인 Git 명령어를 위한 Git 앨리어스를 만들어 두면 시간을 크게 아낄 수 있습니다. freeCodeCamp의 관련 아티클에서 가장 유용한 앨리어스들을 확인해 보세요.

시간을 절약하는 또 다른 방법은 프로세스를 단순화하는 것입니다.

특정 작업 하나만 수행하는 독립된 동작을 만들어 두 개의 명령어를 하나로 합칠 수 있는데, 이를 함수라고 합니다.

유용한 함수의 예로, 새 디렉터리를 생성하는 명령(mkdir)과 해당 디렉터리로 이동하는 명령(cd)을 합치는 것이 있습니다.

이렇게 하면 새 폴더를 만들고 곧바로 그 안으로 이동하는 작업을 한 번에 처리할 수 있습니다.

해당 함수는 다음과 같이 작성합니다.

function mkcd() {
  mkdir -p "$@" && cd "$_";
}

Zsh의 함수에 대해 더 알고 싶다면, Zsh의 앨리어스와 함수를 모두 다루는 Scripting OS X의 아티클을 참고하세요.

앨리어스와 함수는 .zshrc 파일에 직접 추가하거나, 별도의 .aliases, .functions Dotfile로 분리해서 관리할 수도 있습니다.

Dotfile 심볼릭 링크(Symlink) 걸기

dotfiles 폴더의 파일에 아무리 설정을 추가해도 시스템에 아무런 변화가 없다는 것을 눈치채셨을 겁니다.

앞서 언급했듯이 프로그램의 설정 파일은 기본적으로 홈 디렉터리에 숨겨진 상태로 저장되며, 프로그램은 바로 그 위치에서 설정을 찾아 읽어 들입니다.

따라서 선호하는 설정을 담아 둔 dotfiles 디렉터리의 파일과, 프로그램이 기본적으로 참조하는 홈 디렉터리의 파일을 심볼릭 링크(symbolic link, 포인터)로 연결해 주는 것이 좋습니다.

마치 파일이 동시에 두 곳에 존재하는 것과 같은 효과입니다!

파일은 dotfiles 디렉터리에 그대로 있으면서, 홈 디렉터리에는 그 '복사본'처럼 보이는 링크가 생기는 셈이죠.

링크를 만들 때는 link를 의미하는 ln 명령어에 symbolic을 의미하는 -s 인자를 함께 사용합니다.

.zshrc.vimrc 파일을 심볼릭 링크하는 방법은 다음과 같습니다.

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

이렇게 하면 프로그램들이 평소처럼 홈 디렉터리에서 자신의 설정 파일을 찾을 수 있게 됩니다.

ls -l ~/.zshrc 

lrwxr-xr-x  1 dionysialemonaki  staff  39 Oct 21 18:30 /Users/dionysialemonaki/.zshrc -> /Users/dionysialemonaki/dotfiles/.zshrc

.zshrc 파일의 상세 정보를 보면, 홈 디렉터리에 있는 파일이 dotfiles 디렉터리의 파일을 가리키고 있는 것을 확인할 수 있습니다. -> 기호가 바로 심볼릭 링크를 나타냅니다.

모든 Dotfile을 일일이 수동으로 심볼릭 링크하는 것은 번거롭고, Dotfile이 늘어날수록 빠르게 지루하고 반복적인 작업이 됩니다.

이 과정을 더 쉽게 만들려면, 만든 Dotfile에 자동으로 ln -s를 호출해 주는 셸 스크립트를 작성하거나 전용 유틸리티를 활용할 수 있습니다.

Dotfile 버전 관리하기

파일을 버전 관리하면 시간에 따른 모든 변경 사항을 추적할 수 있고, GitHub에 공유할 수도 있습니다.

먼저 dotfiles 디렉터리로 이동하세요(cd dotfiles).

다음 단계에 따라 파일들을 git 저장소로 구성합니다.

  1. 저장소를 초기화합니다.
git init
  1. 지금까지 만든 모든 파일을 추가합니다.
git add .
  1. 변경 사항을 커밋하고 커밋 메시지를 작성합니다.
git commit -m "Added dotfiles"

GitHub에 Dotfile 호스팅하기

GitHub 계정에 로그인되어 있는지 확인하세요.

그다음 새 저장소를 생성합니다.

Dotfiles 완벽 가이드 – Dotfile이란 무엇이며 Mac과 Linux에서 만드는 방법

저장소 이름을 정하고 "Create repository"를 클릭합니다.

이후 커맨드라인에서 다음을 입력합니다.

git remote add origin url 

# 'url'에는 앞서 생성한 저장소의 GitHub URL을 입력합니다.
# URL은 .git으로 끝납니다.

마지막으로,

git push -u origin main

이제 여러분의 Dotfile을 온라인에서 공유할 수 있습니다!

마무리

지금까지 Dotfile의 기본기를 살펴봈습니다. 이 튜토리얼이 도움이 되었기를 바랍니다.

여러분의 Dotfile 프로젝트는 커리어 내내 함께 성장할 것입니다. Dotfile 자체에 대해 배우면 배울수록 프로젝트도 확장되고, 시행착오를 거듭하며 자신의 작업 흐름과 개발 환경에 대한 취향이 분명해질수록 그 모습도 변해갈 것입니다.

읽어 주셔서 감사합니다!