리눅스 파일 시스템에서 /usr 디렉토리의 정체
usr은 user가 아닙니다
리눅스를 조금만 써보면 반드시 마주치게 되는 디렉토리가 있습니다. 바로 /usr입니다.
저도 처음 리눅스를 쓸 때 이렇게 생각했습니다.
“아,
/usr니까 user겠지. 사용자 계정과 관련된 뭔가가 들어가는 디렉토리인가 보다.”
아마 많은 초보 리눅서들이 비슷한 오해를 한 번쯤은 해봤을 겁니다. 하지만 결론부터 말하면:
/usr는 개별 “사용자(user)” 데이터를 위한 디렉토리가 아닙니다. 사용자 홈 디렉토리는/home이 담당하고,/usr는 전혀 다른 역할을 합니다.
이 글에서는 /usr 디렉토리의 진짜 정체와 역할, 그리고 /home, /opt, /var 같은 다른 디렉토리와 어떻게 역할이 나뉘는지를 정리해 보겠습니다.
1. 먼저 결론: /usr는 “사용자 데이터” 디렉토리가 아니다
현대 리눅스에서 /usr의 위치를 딱 한 줄로 정리하면 이렇습니다.
/usr= 시스템이 사용하는 “공유 가능하고, (대체로) 읽기 전용인 프로그램·라이브러리·데이터”가 들어가는 영역
쉽게 말해서:
- OS와 애플리케이션의 실행 파일
- 그 실행 파일들이 사용하는 라이브러리
- 공용으로 사용되는 매뉴얼, 아이콘, 데이터 파일
같은 것들이 들어가는 곳입니다.
반대로, 우리가 흔히 상상하는 “사용자별 문서, 설정, 다운로드 파일” 같은 것들은:
/home/사용자명아래에 저장됩니다./usr와는 역할이 완전히 다릅니다.
그러니 /usr를 “user용 디렉토리”라고 생각하면 정확히는 틀린 셈입니다.
2. 그럼 usr는 뭐의 약자인가?
여기에는 약간의 역사와 논쟁(?)이 있습니다.
- 초기 Unix 시절,
/usr아래에 실제로 사용자 홈 디렉토리가 있었던 시기도 있습니다. - 그래서
usr를 “user”의 줄임말로 보는 전통적인 관점이 있고, - 후대에는 “Unix System Resources” 같은 식으로 재해석하기도 합니다.
하지만 현대 리눅스 사용자 입장에서 중요한 건 역사적인 철자 의미보다는 “현재 역할”입니다.
리눅스 파일시스템 계층 구조 표준(FHS, Filesystem Hierarchy Standard)에서 /usr는 이렇게 정의합니다(요약):
- 시스템 전역에서 공유 가능한(read-only 공유를 가정할 수 있는) 데이터가 들어가는 영역
- 프로그램, 라이브러리, 매뉴얼, 공용 데이터 등
즉, 지금 우리가 사용하는 리눅스에서는:
usr가 user의 약자인지 아닌지는 사실 그다지 중요하지 않고, “여기는 시스템과 어플리케이션의 공용 리소스가 들어가는 구역”이라고 이해하는 게 더 실용적입니다.
3. /usr 아래에는 무엇이 들어 있을까?
직접 서버나 데스크톱에서 ls /usr를 쳐보면 보통 이런 디렉토리들을 볼 수 있습니다.
$ ls /usr
bin lib lib64 local sbin share include ...
각 디렉토리는 대략 이런 의미를 가집니다.
-
/usr/bin -
일반 사용자용 실행 파일(명령어)들이 들어 있습니다.
- 예:
/usr/bin/python,/usr/bin/grep,/usr/bin/curl… -
/usr/sbin -
시스템 관리용 실행 파일, 주로 root가 사용하는 명령어들.
- 예:
/usr/sbin/sshd,/usr/sbin/apachectl… -
/usr/lib,/usr/lib64 -
프로그램들이 사용하는 공용 라이브러리들이 들어 있습니다.
- 예:
.so(shared object) 파일들. -
/usr/share -
아키텍처에 독립적인 공유 데이터.
- 예: 매뉴얼 페이지(
/usr/share/man), 아이콘, 로케일 데이터… -
/usr/include -
C/C++ 헤더 파일들. 개발 툴체인에서 사용.
-
/usr/local -
시스템 패키지 관리자가 아닌, 로컬에서 직접 설치한 프로그램들을 위한 공간 (이건 조금 뒤에 따로 설명).
정리하자면:
/usr는 “시스템 전역에서 사용되는 프로그램과 관련 리소스의 집합” — 실행 파일, 라이브러리, 공용 데이터가 모여 있는 큰 창고 같은 곳입니다.
4. /usr vs /home vs /opt vs /var — 뭐가 어떻게 다른가?
리눅스 파일 시스템 구조가 처음엔 굉장히 헷갈립니다. 특히 /usr, /home, /opt, /var가 헷갈리기 쉬운데, 역할을 비교해 보면 이렇게 정리할 수 있습니다.
4.1 /home — 진짜 “사용자(user)”의 집
- 경로 예:
/home/alice,/home/bob -
사용자별:
-
문서, 사진, 다운로드, 프로젝트 폴더
- 사용자별 설정(
~/.config,~/.ssh등) - OS를 재설치하더라도
/home만 따로 보존하는 경우가 많습니다.
개인 데이터, 개인 설정 = 거의 다
/home
4.2 /usr — 시스템과 앱의 “공용 리소스”
- 프로그램 실행 파일:
/usr/bin,/usr/sbin - 라이브러리:
/usr/lib* - 공용 데이터:
/usr/share
“이 시스템 전체에서 공용으로 쓰는 프로그램/라이브러리/데이터” =
/usr
여기에는 “개별 사용자 계정의 파일”이 들어오지 않습니다.
4.3 /opt — “특정 앱 한 덩어리”를 넣는 공간
- 배포판 패키지가 아닌, 별도로 배포되는 상용/서드파티 앱이 들어오는 경우가 많습니다.
- 예:
/opt/google/chrome,/opt/mycompany/app - 디렉토리 하나에 앱이 통째로 들어가는 패턴이 흔합니다.
“이 앱은 통째로 여기 들어있다”는 식으로 애플리케이션 단위로 관리하는 공간.
4.4 /var — 변경되는 데이터(Variable)
- 로그:
/var/log - 캐시:
/var/cache - 큐, 스풀:
/var/spool - DB, 상태 파일 등 자주 바뀌는 데이터
“자주 바뀌는(run-time) 데이터” =
/var
5. 왜 /bin이 아니라 /usr/bin일까? (그리고 요즘은 더 헷갈린다)
옛날 문서를 보면 /bin, /usr/bin이 나뉘는 이유 같은 것들이 나오는데, 요즘 배포판들은 이걸 단순화해서:
/bin→/usr/bin심볼릭 링크/sbin→/usr/sbin심볼릭 링크
로 처리하는 경우가 많습니다. (Fedora, Ubuntu 등)
즉, 지금 시스템에서는 사실상:
- 실행 파일 대부분이
/usr/bin,/usr/sbin아래에 있고 /bin,/sbin은 과거 호환성을 위한 앞문 같은 존재인 셈입니다.
처음 접하는 입장에서는 오히려 더 헷갈리지만, 핵심은:
“실제 프로그램이 어디 있냐?” → 대부분
/usr/bin,/usr/sbin쪽에 있다 정도만 기억해도 충분합니다.
6. 초보 리눅서가 헷갈리지 않으려면
리눅스를 처음 쓸 때 저를 포함한 많은 사람이 겪는 혼란은 대체로 이런 식입니다.
- “
/usr니까 user인가 보다…” - “그럼 내 프로그램은
/usr에 설치해야 하나?” - “
/home이랑 뭐가 다른 거지?”
실제로 사용할 때는 아래 기준만 기억해도 대부분의 혼란이 정리됩니다.
6.1 개인용 스크립트/툴은 어디에 둘까?
- 나 혼자 쓰는 스크립트, 툴: 보통
~/bin이나~/scripts정도 - PATH에 추가해서 사용하면 OK
mkdir -p ~/bin
echo 'export PATH="$HOME/bin:$PATH"' >> ~/.bashrc
여기에 두는 것은 “개인 영역”이기 때문에 /usr와는 다른 차원입니다.
6.2 시스템 전체에서 쓰는 커스텀 앱은?
- 소스 컴파일해서 직접 설치하는 앱
- AppImage, tar.gz로 배포되는 서드파티 앱
같은 것들을 시스템 전체에서 사용하고 싶다면:
- 실행 파일/앱 본체:
/opt/앱이름아래 - 실행용 진입점:
/usr/local/bin에 심볼릭 링크
같은 패턴이 깔끔합니다.
이처럼 /usr/local은:
“배포판 패키지(apt, dnf, pacman 등)로 설치되지 않은, 로컬에서 관리하는 프로그램을 위한 공간”
으로 쓰는 것이 관례입니다.
/usr 자체보다는 /usr/local을 “관리자 마음대로 쓸 수 있는 전용 영역”으로 보는 쪽이 자연스럽습니다. 
7. 요약: /usr는 “사용자의 집”이 아니라 “시스템의 창고”
마지막으로 한 번 더 요약해 봅시다.
/usr는 user 데이터 디렉토리가 아니다.-
현대 리눅스에서
/usr는: -
시스템과 애플리케이션의 공용 실행 파일
- 그들이 사용하는 라이브러리
- 공용 매뉴얼, 아이콘, 데이터 가 모여 있는 큰 창고 같은 영역이다.
- 진짜 사용자 개인 데이터는
/home/사용자명아래에 있다. - 우리가 직접 설치한 앱은 보통
/opt,/usr/local등을 활용해서 관리한다.
리눅스 파일 시스템 구조를 이해하기 시작하면:
- “이 파일은 어디에 두는 게 맞을까?”
- “이 앱은 시스템 전체에서 쓸 건가, 나만 쓸 건가?”
- “OS를 갈아엎어도 보존해야 할 건 무엇인가?”
같은 질문에 대한 감각이 생깁니다. 그리고 그 시작점 중 하나가 바로 /usr의 정체를 올바르게 이해하는 것입니다.
댓글이 없습니다.