[TIL] Missing Semester #2: Command-line Environment

2026. 04. 11.Yeji Kim
missing-semester

Claude와 함께 MIT Missing Semester 강의를 실습하며 정리한 내용입니다.

들어가며

이번 강의는 CLI 환경을 효율적으로 세팅하고 활용하는 방법을 다룬다.

핵심 개념

환경변수

쉘이 동작하는 데 필요한 설정값. 자식 프로세스에 상속된다.

  • $HOME - 홈 디렉토리
  • $USER - 사용자명
  • $PATH - 프로그램 검색 경로
  • printenv - 전체 환경변수 목록
  • export - 환경변수 설정 (자식 프로세스에도 전달)

쉘 설정 파일

쉘 시작 시 자동으로 읽는 파일:

  • zsh~/.zshrc
  • bash~/.bashrc, ~/.bash_profile

alias, 환경변수, 프롬프트 설정 등을 여기에 넣어두면 영구 적용.

시그널과 잡 컨트롤

프로세스에 보내는 신호:

단축키/명령어시그널의미
Ctrl-CSIGINT중단 요청
Ctrl-ZSIGTSTP일시정지
kill PIDSIGTERM종료 요청
kill -9 PIDSIGKILL강제 종료 (무시 불가)

잡 컨트롤 흐름:

command & → 백그라운드 실행 → fg %1 → 포그라운드로 → Ctrl-Z → 일시정지 → bg %1 → 백그라운드로 다시 → kill %1 → 종료

jobs로 현재 잡 목록 확인, pgrep으로 이름으로 프로세스 찾기.

실무 예시: npm run dev &로 서버 띄워놓고 다른 작업하다가, fg로 가져와서 로그 확인.

tmux (터미널 멀티플렉서)

하나의 터미널에서 여러 화면을 분할해서 사용하는 도구.

좌측에 npm run dev, 우측에 git status, 하단에 파일 작업 — 이런 식으로 화면을 분할해서 쓸 수 있다.

킬러 기능은 세션 유지. 터미널을 닫거나 SSH가 끊겨도 세션이 살아있다.

tmux 구조: 세션 > 윈도우(탭) > 페인(분할 영역)

핵심 명령어 (prefix Ctrl-b는 누르고 손 떼고 다음 키를 누르는 두 단계 동작):

명령어동작
tmux new -s name새 세션
tmux attach -t name세션 재접속
tmux ls세션 목록
Ctrl-b%좌우 분할
Ctrl-b"상하 분할
Ctrl-b방향키페인 이동
Ctrl-bc새 윈도우
Ctrl-bn/p다음/이전 윈도우
Ctrl-bd세션 분리 (detach)

SSH

원격 서버에 안전하게 접속하는 프로토콜.

bash
ssh <user>@<hostname>            # 기본 접속
ssh-keygen -t ed25519            # 키 생성
ssh-copy-id <user>@<hostname>    # 서버에 공개키 등록

~/.ssh/config에 접속 정보 저장하면 ssh myserver만으로 접속 가능:

text
Host myserver
    HostName xxx.xxx.x.xxx
    User <username>
    IdentityFile ~/.ssh/id_ed25519

포트 포워딩, scp/rsync(파일 전송), mosh(불안정한 네트워크용 SSH) 등도 있다.

Alias

자주 쓰는 긴 명령어에 별칭 붙이기. ~/.zshrc에 넣으면 영구 적용.

bash
alias ll='ls -la'
alias gs='git status'

가장 많이 치는 명령어 확인:

bash
history | awk '{print $2}' | sort | uniq -c | sort -rn | head -10

Dotfiles

.으로 시작하는 설정 파일들의 총칭 (.zshrc, .gitconfig, .vimrc 등). Git으로 관리하면 머신 간 동기화 가능.

실습 기록

잡 컨트롤

sleep 100 &로 백그라운드 실행 → jobs로 확인 → fg/bg/kill로 제어하는 흐름을 실습.

tmux 블로그 개발 레이아웃

한 줄로 블로그 개발 환경 세팅:

bash
tmux new-session -d -s blog -c ~/kimyeji \; \
  send-keys 'npm run dev' C-m \; \
  split-window -h -c ~/kimyeji \; \
  send-keys 'git status' C-m \; \
  split-window -v -c ~/kimyeji \; \
  attach

왼쪽 개발 서버 / 오른쪽 위 git / 오른쪽 아래 자유 작업.

Alias 등록

history 분석 결과 git이 압도적 1위. 블로그 관련 alias를 ~/.zshrc에 추가:

bash
alias blog='cd ~/kimyeji && npm run dev'
alias gst='git status'
alias gl='git log --oneline -10'

레퍼런스