홈 디렉토리
1. 개요
홈 디렉터리는 운영 체제에서 각 사용자 계정에 할당된 개인 폴더로, 사용자의 파일, 설정, 프로그램 등을 저장하는 공간이다. 윈도우, 유닉스, 리눅스, macOS 등 다양한 운영 체제에서 각기 다른 경로와 환경 변수를 사용하여 홈 디렉터리를 정의한다. 유닉스 계열에서는 `/home/
-
파일 시스템 디렉토리 -
작업 디렉토리
작업 디렉토리는 컴퓨터 파일 시스템에서 현재 사용자가 작업 중인 디렉토리를 의미하며, 운영체제 및 프로그래밍 언어에서 변경 및 확인 기능을 제공하고, DLL 검색 경로에 포함 시 보안 문제가 발생할 수 있다. -
파일 시스템 디렉토리 -
서류 가방 (마이크로소프트 윈도우)
서류 가방은 윈도우 운영체제에서 이동식 미디어나 네트워크 폴더 간 파일 동기화를 지원하는 특수 폴더로, 파일 변경 사항 추적 및 동기화를 통해 최신 상태를 유지하며, 마이크로소프트 액세스와 연동하여 데이터베이스 복제 기능을 제공하고 개발자는 사용자 정의 조정기로 문서 버전 관리 기능을 구현할 수 있다. -
파일 시스템 -
부트 섹터
부트 섹터는 시스템 부팅 코드를 담은 저장 매체의 특정 영역으로, 볼륨 부트 레코드(VBR)와 마스터 부트 레코드(MBR)로 나뉘며, BIOS는 이를 실행하고 UEFI는 부트로더를 직접 로드하지만 바이러스 공격에 취약하다. -
파일 시스템 -
ZFS
ZFS는 Jeff Bonwick 등이 설계하고 구현한 파일 시스템으로, 데이터 무결성, 스냅샷, RAID-Z 등의 기능을 제공하며, 썬 마이크로시스템즈에서 개발되어 OpenZFS 프로젝트를 통해 다양한 운영체제에서 사용된다.
2. 운영 체제별 기본 홈 디렉터리
다음은 다양한 운영 체제에서의 기본 홈 디렉터리 경로와 관련 환경 변수를 나타낸 표이다.
2.1. 윈도우
마이크로소프트 윈도우에서는 시스템 드라이브명이 통상 C: 이므로, 여기서는 C: 드라이브를 기준으로 설명한다.
| 운영 체제 | 경로 | 환경 변수 |
|---|---|---|
| Windows NT | \WINNT\Profiles\<사용자 이름> | %USERPROFILE% |
| Windows 2000 Windows XP Windows Server 2003 | \Documents and Settings\<사용자 이름> | |
| Windows Vista Windows 7 Windows 8 Windows 8.1 Windows 10 | \Users\<사용자 이름> |
Windows 95 OSR2 이후 홈 디렉터리와 유사한 개념이 도입되었다. 사용자가 직접 만든 프로그램이나 문서(내 문서 디렉터리)와 함께 프로그램이나 환경 설정(레지스트리 파일 및 프로그램 설정 파일)이 홈 디렉터리에 저장된 것은 Windows 95계를 멀티 유저로 설정한 경우 및 Windows NT 이후이다.
* C:\My Documents - Windows 95 OSR2, Windows 98 (싱글 유저의 경우)
* C:\Windows - (레지스트리 및 프로그램 설정) Windows 95 OSR2, Windows 98 (싱글 유저의 경우)
* C:\Windows\Profiles\<사용자 이름> - Windows 95 OSR2, Windows 98 (멀티 유저의 경우)
2.2. 유닉스 계열
| 운영 체제 | 경로 | 환경 변수 | |
|---|---|---|---|
| AT&T 유닉스 (초창기 버전) | /usr/username영어 | $HOME | |
| 유닉스 파생 운영 체제 | /var/users/username영어/u01/username영어/usr/username영어/user/username영어/users/username영어 | ||
| 유닉스 기반 | /home/username영어 | ||
| BSD / 리눅스 (FHS) | /home/username영어 또는 /usr/home/username영어 | ||
| SunOS / 솔라리스 | /export/home/username영어 | ||
| macOS | /Users/username영어 | ||
| 안드로이드 | /data/media/userid영어 | ||
유닉스(Unix)에서 작업 디렉터리는 사용자가 로그인할 때 자동으로 사용자의 홈 디렉터리로 설정된다. 많은 내장 명령어에서 ~영어 (틸드) 문자를 입력하는 것은 현재 사용자의 홈 디렉터리를 지정하는 것과 같다.
유닉스 슈퍼유저는 파일 시스템의 모든 디렉터리에 접근할 수 있으며, 따라서 모든 사용자의 홈 디렉터리에 접근할 수 있다. 이전 시스템에서 슈퍼유저의 홈 디렉터리는 /영어였지만, 많은 최신 시스템에서는 /root영어 (리눅스, BSD) 또는 /var/root영어 (macOS)에 위치해 있다.
멀티 유저 컴퓨터에서 사용자는 자유롭게 파일이나 하위 디렉터리를 생성하고 저장할 수 있는 디렉토리이다. 사용자 자신이 만든 프로그램, 문서, 사용자 고유의 설정 파일 등을 저장할 수 있다. 홈 디렉토리가 어디에 있는지는 시스템 설정 파일인
/etc/passwd에 기술되어 있다.해당 시스템에서 표준으로 사용되는 홈 디렉토리의 위치는 시스템에 따라 다르다.
*
/home/username영어 - 많은 UNIX와 BSD, 리눅스 배포판에서 사용된다. FHS에서 규정하고 있으며, 가장 표준적인 홈 디렉토리 위치이다.*
/export/home/username영어 - Solaris에서 사용되는 경우가 있다.*
/Users/username영어 - macOS, NEXTSTEP, OPENSTEP 등에서 사용된다.*
/usr/username영어 - 초기 UNIX에서 사용되었다。/usr은 사용자 파일 시스템을 의미한다.유닉스 계열 OS에서 슈퍼 유저인 root의 홈 디렉토리는 다른 사용자와 달리
/ 또는 /root 등이다. 이 사용자들의 홈 디렉토리는 루트 파일 시스템에 위치한다. 드물지만 root의 홈 디렉토리가 다른 슬라이스(파티션)나 NFS 상에 있을 경우 root가 로그인할 수 없게 된다.홈 디렉토리 정보는 환경 변수
HOME에 설정되어 있으며, 운영 체제에서 동작하는 다양한 프로그램이 이를 참조한다. 또한 많은 셸에서는 ~로 홈 디렉토리를 나타낸다. 셸의 빌트인 명령인 cd를 인자 없이 실행하면 홈 디렉토리로 이동할 수 있다. 홈 디렉토리를 ~로 나타내는 것과 관련하여, 당시 현역 기기였던 vi의 개발 기기이기도 했던 ADM-3A의 키보드에서는 HOME 키와 ~ 키가 같은 키 위에 각인되어 있다。
2.3. 기타 운영 체제
| 운영 체제 | 경로 | 환경 변수 | |||||||||||||||||||||||||||||||||||
|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
| AT&T 유닉스 (초창기 버전) | /usr/{{lang|en|사용자 이름|} | }||||||||||||||||||||||||||||||||||||
| 운영체제 | 홈 디렉터리 경로 |
|---|---|
| 많은 UNIX와 BSD, 리눅스 배포판 | /home/username |
| Solaris | /export/home/username |
| macOS, NEXTSTEP, OPENSTEP | /Users/username |
| 초기 UNIX | /usr/username |
| Windows 95 OSR2, Windows 98 (싱글 유저의 경우) | C:\My Documents |
| Windows 95 OSR2, Windows 98 (싱글 유저의 경우) | C:\Windows |
| Windows 95 OSR2, Windows 98 (멀티 유저의 경우) | C:\Windows\Profiles\사용자명 |
| Windows NT | C:\WINNT\Profiles\사용자명 |
| Windows 2000, Windows XP, Windows Server 2003 | C:\Documents and Settings\사용자명 |
| Windows Vista, Windows 7, Windows 8, Windows 8.1, Windows 10 | C:\Users\사용자명 |
| Haiku | /boot/home |
유닉스 계열 OS에서 슈퍼 유저인 root의 홈 디렉토리는 다른 사용자와 달리
/ 또는 /root 등이다. 이 사용자들의 홈 디렉토리는 루트 파일 시스템에 위치한다. 드물지만 root의 홈 디렉토리가 다른 슬라이스(파티션)나 NFS 상에 있을 경우 root가 로그인할 수 없게 된다.홈 디렉토리 정보는 환경 변수 `HOME`에 설정되어 있으며, 운영 체제에서 동작하는 다양한 프로그램이 이를 참조한다. 또한 많은 셸에서는 `~`로 홈 디렉토리를 나타낸다. 셸의 빌트인 명령인 `cd`를 인자 없이 실행하면 홈 디렉토리로 이동할 수 있다. 홈 디렉토리를 `~`로 나타내는 것과 관련하여, 당시 현역 기기였던 vi의 개발 기기이기도 했던 ADM-3A의 키보드에는 HOME 키와 `~` 키가 같은 키 위에 각인되어 있다.
3.1. 하위 디렉터리
사용자의 홈 디렉터리는 텍스트 문서, 음악, 사진, 비디오 등 해당 사용자의 파일들을 담도록 설계되었다. 여기에는 사용자가 사용하고 개인 취향에 맞게 조정했을 수 있는 모든 소프트웨어의 선호 설정에 대한 설정 파일도 포함될 수 있다. 예를 들어 웹 브라우저 즐겨찾기, 선호하는 데스크톱 배경화면 및 테마, 특정 소프트웨어를 통해 접근하는 모든 외부 서비스에 저장된 비밀번호 등이 있다. 사용자는 이 디렉터리에 실행 파일을 설치할 수 있지만, 이 디렉터리에서 파일을 실행할 권한이 있는 사용자만 사용할 수 있다. 홈 디렉터리는 하위 디렉터리를 사용하여 더 세분화하여 구성할 수 있다.
리눅스 시스템의 많은 파일에서 `/etc/xdg/user-dirs.defaults` 파일은 사용자를 위해 기본적으로 생성되는 하위 디렉터리를 정의한다. 일반적으로 Xdg-user-dirs에 의한 첫 번째 로그인을 통해 생성되며, 이는 "자주 사용되는" 사용자 디렉터리, 즉 '데스크톱', '다운로드', '문서', '사진', '비디오' 또는 '음악'과 같은 디렉터리를 관리하는 데 도움을 주는 도구이다. 이 도구는 또한 폴더 이름의 지역화(번역) 기능도 갖추고 있다.
4. 홈 디렉터리와 관련된 추가 정보
유닉스 슈퍼유저는 파일 시스템의 모든 디렉터리에 접근할 수 있으며, 따라서 모든 사용자의 홈 디렉터리에 접근할 수 있다. 이전 시스템에서 슈퍼유저의 홈 디렉터리는 /였지만, 많은 최신 시스템에서는 `/root` (리눅스, BSD) 또는 `/var/root` (macOS)에 위치해 있다.
멀티 유저 컴퓨터에서 사용자는 자유롭게 파일이나 하위 디렉토리를 생성하고 저장할 수 있다. 사용자 자신이 만든 프로그램, 문서, 사용자 고유의 설정 파일 등을 저장할 수 있다. 홈 디렉터리가 어디에 있는지는 시스템 설정 파일인 `/etc/passwd`에 기술되어 있다.
시스템에 따라 표준으로 사용되는 홈 디렉토리의 위치는 다음과 같다.
홈 디렉토리 정보는 환경 변수 `HOME`에 설정되어 있으며, 운영 체제에서 동작하는 다양한 프로그램이 이를 참조한다.
Windows 95 OSR2 이후 홈 디렉토리와 유사한 개념이 도입되었다. 사용자가 직접 만든 프로그램이나 문서(내 문서 디렉토리)와 함께 프로그램이나 환경 설정(레지스트리 파일 및 프로그램 설정 파일)이 홈 디렉토리에 저장된 것은 Windows 95계를 멀티 유저로 설정한 경우 및 Windows NT 이후이다.
| | 경로 | |
|---|---|
| Windows 95 OSR2, Windows 98 (싱글 유저) | `C:\My Documents` 또는 `C:\Windows` |
| Windows 95 OSR2, Windows 98 (멀티 유저) | `C:\Windows\Profiles\사용자명` |
| Windows NT | `C:\WINNT\Profiles\사용자명` |
| Windows 2000, Windows XP, Windows Server 2003 | `C:\Documents and Settings\사용자명` |
| Windows Vista, Windows 7, Windows 8, Windows 8.1, Windows 10 | `C:\Users\사용자명` |
Haiku에서는 `/boot/home`을 "홈 폴더"라고 부르며, 여기에 개인이 관리하는 (예: 데스크톱 설정이나 수신된 메일) 여러 디렉토리가 위치한다. 현재 Haiku는 개발 중이며, 여러 사용자가 동시에 OS를 사용하는 것을 지원하지 않는다. 그 때문에 `/boot/home`을 홈 디렉토리로 사용하는 사용자는 실질적으로 Haiku 시스템의 관리자이다. 그러나, 장래 개발될 예정인 복수 사용 환경을 고려하여, 관리자와 구분되는 사용자 정보를 여기에 저장하도록 하고 있다.
4.1. 유닉스에서 틸드(~)의 의미
유닉스에서 작업 디렉터리는 사용자가 로그인할 때 자동으로 사용자의 홈 디렉터리로 설정된다. 많은 내장 명령어에서 틸드(~) 문자를 입력하는 것은 현재 사용자의 홈 디렉터리를 지정하는 것과 같다.
유닉스 계열 OS에서 슈퍼 유저(root)의 홈 디렉토리는 다른 사용자와 달리 `/` 또는 `/root` 등이다. 이 사용자들의 홈 디렉터리는 루트 파일 시스템에 위치한다. 드물지만 root의 홈 디렉터리가 다른 슬라이스(파티션)나 NFS 상에 있을 경우 root가 로그인할 수 없게 된다.
많은 셸에서는 `~`로 홈 디렉토리를 나타낸다. 셸의 빌트인 명령인 `cd`를 인자 없이 실행하면 홈 디렉토리로 이동할 수 있다. 홈 디렉토리를 `~`로 나타내는 것과 관련하여, 당시 현역 기기였던 vi의 개발 기기이기도 했던 ADM-3A의 키보드에서는 HOME 키와 `~` 키가 같은 키 위에 각인되어 있다.