루트
한 줄 정의
더 위로 올라갈 수 없는 가장 처음 자리
1. 비유로 이해하기
나무를 거꾸로 뒤집어 보면 된다. 컴퓨터의 폴더 구조가 딱 그 모양이다.
어느 파일에서 출발해도 계속 위로 올라가면 결국 루트에 도착하고, 거기서는 더 올라갈 곳이 없다. 뿌리니까.
2. 왜 필요한가
루트 디렉터리 — 경로의 기준점
파일 시스템의 최상단이다. 표기는 운영체제마다 다르다.
| 환경 | 루트 표기 |
|---|---|
| Windows | C:\ |
| Linux · macOS | / |
| 프로젝트 기준 | 그 프로젝트 폴더 자체 |
이게 중요한 이유는 경로를 읽는 기준이 되기 때문이다. /home/user/a.txt처럼 루트부터 전부 쓴 주소가 절대 경로이고, ./a.txt처럼 지금 서 있는 자리를 기준으로 쓴 주소가 상대 경로다.
에이전트에게 파일 도구를 줄 때도 기준선이 된다. “어디부터 어디까지 건드릴 수 있는가”가 루트로 정해진다.
# 위험: 컴퓨터 전체를 뒤질 수 있다
allowed_root = "/"
# 안전: 이 폴더 밖으로는 못 나간다
allowed_root = "/home/user/project"
MCP 파일 서버를 실행할 때 폴더를 인자로 넘기는 이유가 이것이다. 그 폴더가 그 서버의 루트가 된다.
npx @modelcontextprotocol/server-filesystem ~/docs
# └─ 이 서버의 루트
설정 파일이 루트에 모이는 이유
에이전트 프로젝트의 전형적인 폴더 구조다.
my-agent/ ← 프로젝트 루트
├── README.md ← 설명 (대문 안내판)
├── .gitignore ← 올리지 말 파일 목록
├── .env ← API 키 (절대 커밋 금지)
├── src/
│ ├── harness.py
│ └── tools.py
└── data/
└── memory.db ← SQLite 기억 파일
설정 파일이 전부 루트에 모여 있다. 우연이 아니다. 프로그램들이 “이 프로젝트의 설정은 루트에 있겠지” 하고 그 자리를 찾기 때문이다. .gitignore를 src/ 안에 넣으면 git이 못 찾는다.
저장소의 README.md를 루트에 두는 것도 같은 이유다. 누가 저장소에 처음 들어오면 무조건 거치는 자리라서, 대문에 붙인 안내판이 되는 것이다.
루트 사용자 — 뭐든 할 수 있는 계정
컴퓨터에서 최고 권한을 가진 계정을 루트 사용자라고 한다. 리눅스에서 명령 앞에 sudo를 붙이는 건 “잠깐 최고 권한으로 하겠습니다”라는 뜻이다.
에이전트에게 명령 실행 도구를 줄 때는 절대 루트 권한으로 돌리지 않는 게 원칙이다. 모델이 판단을 잘못하면 되돌릴 수 없는 일이 벌어질 수 있기 때문이다.
루트 원인 — 증상이 아니라 뿌리
문제의 진짜 원인을 뜻한다. 눈에 보이는 증상이 아니라, 계속 “왜?”를 타고 내려가면 나오는 자리다.
증상: 에이전트가 엉뚱한 답을 한다
↓ 왜?
검색 도구가 관련 없는 문서를 가져온다
↓ 왜?
모델이 검색어를 너무 짧게 만든다
↓ 왜?
도구 스키마의 설명이 부실하다 ← 루트 원인
3. 어디서 만났나
이 용어 자체는 수업에서 정식으로 다루기 전에 따로 정리한 것이다. 다만 루트가 무엇인지 알아야 넘어갈 수 있는 자리는 이미 두 번 있었다.
2회차에서 블로그 저장소를 만들고 그 폴더에서 작업을 시작했다. 그 폴더가 바로 프로젝트 루트였고, README.md와 설정 파일이 거기 놓였다.
2회차 — Git·GitHub 복습과 바이브 코딩 작업대 만들기
3회차에서 PATH를 배우며 “경로”라는 개념을 처음 다뤘다. 운영체제가 실행 파일을 찾아 다니는 그 주소들이 전부 루트에서 출발한다.
3회차 — PATH, 프로세스와 스레드, 그리고 동기·비동기
4. 헷갈리는 개념
| 이 용어 | 비슷하지만 다른 것 | 차이 |
|---|---|---|
| 루트 | 홈 디렉터리 (~) |
홈은 내 개인 폴더다. 루트 한참 아래에 있다 |
| 루트 | 워킹 디렉터리 | 워킹 디렉터리는 지금 내가 서 있는 폴더. 명령을 치면 여기가 기준이 된다 |
| 절대 경로 | 상대 경로 | 절대 경로는 루트부터 다 쓴 주소(/home/user/a.txt), 상대 경로는 지금 위치 기준(./a.txt, ../b.txt) |
| 루트 (root) | 라우트 (route) | 전혀 다른 영어 단어. route는 경로·노선을 뜻하고, 에이전트 분야에서는 “어느 모델에게 질문을 보낼까”를 정하는 라우팅으로 쓰인다 |
5. 많이들 오해하는 지점
ㄱ. “루트 = C 드라이브”
윈도우를 쓰면 이렇게 굳기 쉽다. 하지만 루트에는 늘 “무엇의”가 붙는다. 프로젝트 루트도 루트고, MCP 파일 서버에 넘겨준 ~/docs도 그 서버의 루트다. C:\는 파일 시스템 전체의 루트일 뿐이다.
그래서 누가 “루트에 두세요”라고 하면 무엇의 루트인지 먼저 물어봐야 한다. 대개는 프로젝트 폴더 맨 위를 말하는 것이지, C:\에 파일을 놓으라는 뜻이 아니다.
ㄴ. “루트 = 내 문서 같은 홈 폴더”
홈(~)은 루트가 아니다. 윈도우에서 C:\Users\내이름, 맥에서 /Users/내이름처럼 루트 한참 아래에 있는 내 개인 폴더다. 컴퓨터를 켜면 보통 여기서 시작하니까 여기가 꼭대기처럼 느껴지는 것뿐이다.
ㄷ. 한국어 “루트”가 사실 세 단어다
| 한글 | 영어 | 뜻 |
|---|---|---|
| 루트 | root | 뿌리, 최상단 |
| 루트 (라우트) | route | 경로, 노선 |
| 루트 | √ | 제곱근 |
그래서 “루트 경로”라는 말은 그 자체로 모호하다. 개발 문맥에서 그냥 “루트”라고 하면 대개 root(최상단)이고, 경로를 뜻할 때는 보통 “라우트 / 라우팅”이라고 구분해서 쓴다.