-
Notifications
You must be signed in to change notification settings - Fork 1
Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
- 확인하는 김에 정리함.
- Loading branch information
Showing
1 changed file
with
97 additions
and
0 deletions.
There are no files selected for viewing
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,97 @@ | ||
Title: XDG에서 사용중인 기본 디렉토리 정리 | ||
Date: 2024-06-30 15:25:14 | ||
Modified: 2024-06-30 15:25:14 | ||
Category: Operation | ||
Tags: xdg-utils, desktop, unix-like, os | ||
Slug: xdg에서-사용중인-기본-디렉토리-정리 | ||
Summary: [dotrc](https://github.com/ujuc/dotrc) 정리중에 `tigrc` 파일을 `$XDG_CONFIG_HOME/tig/config` 부터 찾고 있는것을 보다보니 `$XDG_CONFIG_HOME` 이라는 것을 확인했고, [XDG-utils](https://en.wikipedia.org/wiki/Portland_Project)에서 사용중인 디렉토리에대해서 정리한다. | ||
|
||
- 공식 문서: [XDG Base Directory Specification](https://specifications.freedesktop.org/basedir-spec/latest/index.html) | ||
- [freedesktop.org Specifications Wiki - Desktop base directories](https://www.freedesktop.org/wiki/Specifications/basedir-spec/) | ||
|
||
--- | ||
|
||
[TOC] | ||
|
||
`freedesktop.org` 에서 2003년도에 정의한 내용인데... 난 지금 봤다. 이상하게 요즘 사용하는 툴에서 `config` 파일을 `$HOME/.config`로 넣고 있어서 확인한 내용 정리. | ||
|
||
`XDG` 는 `Cross Desktop Group`의 줄임말. | ||
|
||
# 환경 변수 설명 | ||
|
||
- MacOS에서는 아래 변수가 정의되어있지 않기에 비어있음. Linux는 기본으로 들어가있을것같은데 찾지 않음. | ||
- 모든 경로는 절대 경로여야하며, 상대경로로 작성시 무시됨. | ||
- 디릭토리 우선순위: `HOME` 변수 >> `DIRS` | ||
|
||
## 사용자 실행파일 DIR | ||
|
||
- `$HOME/.local/bin` 에 저장될 수 있으며, 리눅스 배포판에서는 `UNIX $PATH` 환경 변수에 적절한 위치로 보이게 설정해야함. | ||
- 왠만해서는 하나의 아키텍처 시스템에서 사용되는 `$HOME`이지만 다른 아키텍처 시스템에서 공유될 수 있으니 조심해서 사용할 것. | ||
|
||
## XDG_DATA_HOME | ||
|
||
- `$XDG_DATA_HOME` | ||
- 기본값: `$HOME/.local/share` | ||
- 사용자별 데이터 파일을 저장하는 기본 디렉토리 | ||
|
||
## XDG_DATA_DIRS | ||
|
||
- `$XDG_DATA_DIRS` | ||
- 기본값: `/usr/local/share/:/usr/share/` | ||
- 데이터 파일 검색시 추가로 확인할 디렉토리 집합 | ||
- 우선 순위별로 추가하고 구분은 `:`를 이용 | ||
|
||
## XDG_CONFIG_HOME | ||
|
||
- `$XDG_CONFIG_HOME` | ||
- 기본값: `$HOME/.config` | ||
- 사용자별 구성 파일을 저장하는 기본 디렉토리 | ||
|
||
## XDG_CONFIG_DIRS | ||
|
||
- `$XDG_CONFIG_DIRS` | ||
- 기본값: `/etc/xdg` | ||
- 구성 파일 검색시 추가로 확인할 디렉토리 집합 | ||
- 우선 순위별로 추가하고 구분은 `:`를 이용 | ||
|
||
## XDG_STATE_HOME | ||
|
||
- `$XDG_STATE_HOME` | ||
- 기본값: `$HOME/.local/state` | ||
- 사용자별 상태 파일을 저장하는 기본 디렉토리 | ||
- 상태 파일?: 작업 기록, 애플리케이션 현재 상태 등등등...(?) | ||
|
||
> 예제: gh state 파일 | ||
```yml | ||
.local/state/gh | ||
❯ cat state.yml | ||
───────┬───────────────────────────────────────────────────────── | ||
│ File: state.yml | ||
───────┼───────────────────────────────────────────────────────── | ||
1 │ checked_for_update_at: 2024-06-30T11:43:11.458951+09:00 | ||
2 │ latest_release: | ||
3 │ version: v2.52.0 | ||
4 │ url: https://github.com/cli/cli/releases/tag/v2.52.0 | ||
5 │ publishedat: 2024-06-24T19:10:40Z | ||
───────┴─────────────────────────────────────────────────────────- | ||
``` | ||
|
||
## XDG_CACHE_HOME | ||
|
||
- `$XDG_CACHE_HOME` | ||
- 기본값: `$HOME/.cache` | ||
- 사용자별 캐시 데이터 파일을 저장하는 기본 디렉토리 | ||
|
||
## XDG_RUNTIME_DIR | ||
|
||
- `$XDG_RUNTIME_DIR` | ||
- 사용자별 애플리케이션 런타입 파일 및 기타 파일 객체(소켓, 이름이 지정된 파이프 등)을 저장하는 기본 디렉토리 | ||
- **[MUST]** 사용자만 읽기, 쓰기, 접근이 가능해야함 (Mode: `0700`) | ||
- **[MUST]** 로컬 파일 시스템에만 존재해야하며, 공유되는 곳에 있어서는 안됨. | ||
- **[MUST]** 사용자 로그인시 생성되고, 로그아웃되면 제거됨. | ||
- **[MAY]** 주기적으로 정리 대상이 될 수 있음. | ||
- 파일을 삭제하지 않도록 하려면 6시간마다 access time timestamp를 수정하거나, 파일에 `sticky` 비트를 설정해야함. | ||
- 해당 변수가 설정되지 않은 경우 | ||
- 애플리케이션에서 유사한 기능을 가진 대체 디렉토리로 대체하고 경고 메시지를 출력하게 해야함. | ||
- 통신, 동기화 목적으로 사용해야하며, 런타임 메모리에 상주가 가능하나 반드시 디스크로 스왑 아웃하지 않으니 대용량 파일을 저장해서는 안됨. |