# 환경 변수 및 임시 파일 유지

codespace를 열 때마다 동일한 값으로 설정되도록 사용자 지정 환경 변수를 구성할 수 있습니다. 또한 codespace가 중지될 때 임시 파일이 삭제되지 않도록 구성할 수도 있습니다.

## 환경 변수 유지 설정

변수를 사용할 codespaces, 리포지토리 또는 사용자에 따라 여러 가지 방법으로 영구 사용자 지정 환경 변수를 설정할 수 있습니다.

아래에 나열된 사용자 지정 변수를 설정하는 모든 방법을 통해, `echo $VARNAME`(와)과 같은 구문을 사용하여 codespace의 사용자 지정 변수에 액세스할 수 있습니다.

### 단일 "codespace"의 경우

Bash 셸을 사용하지 않는 경우 `~/.bashrc` 파일 또는 해당하는 구성 파일에서 환경 변수의 값을 설정할 수 있습니다. 예를 들어, 다음 `VARNAME=value` 문을 추가합니다.

이 파일에 변경 내용이 저장되면 다음에 codespace를 열 때 값이 설정되거나 `source ~/.bashrc` 같은 명령을 사용하여 즉시 설정할 수 있습니다. codespace를 중지하고 시작하면 변수가 다시 설정됩니다. 그러나 컨테이너를 다시 빌드하면 홈 디렉터리의 파일 변경 내용이 다시 설정되므로 `~/.bashrc` 파일에 설정된 변수는 다시 빌드를 통해 유지되지 않습니다. 자세한 내용은 [임시 파일이 자동으로 삭제되지 않도록 방지](#preventing-temporary-files-from-being-automatically-deleted)를 참조하세요.

### 리포지토리에 대한 모든 코드스페이스의 경우

리포지토리용으로 만드는 모든 codespaces에 대해 영구 사용자 지정 환경 변수를 설정할 수 있는 세 가지 방법이 있습니다.

* 리포지토리용 `devcontainer.json` 구성 파일을 편집할 수 있습니다.
* 사용자 지정 Dockerfile을 사용할 수 있습니다.
* 개발 환경 비밀을 사용할 수 있습니다.

#### 리포지토리용 `devcontainer.json` 구성 파일을 편집하기

리포지토리용 `devcontainer.json` 구성 파일을 편집하고 `remoteEnv` 속성을 사용하여 환경 변수 값을 설정합니다.

```json
{
  "remoteEnv": {
    "VARNAME": "value"
  }
}
```

리포지토리에 일반 텍스트로 커밋할 수 있는 값에만 이 메서드를 사용합니다. 액세스 토큰과 같은 중요한 값의 경우 개발 환경 비밀을 사용합니다.

환경 변수는 편집기의 원격 서버 프로세스 내에서 설정되며 터미널 및 디버깅 세션과 같은 해당 원격 서버 프로세스의 하위 프로세스에 사용할 수 있습니다. 그러나 변수를 컨테이너 내에서 더 광범위하게 사용할 수는 없습니다. 이 메서드는 시작 시 실행되는 다른 백그라운드 프로세스에 대해 환경 변수를 설정할 필요가 없고 미리 만든 이미지를 사용하고 사용자 지정 Dockerfile이 없거나 원하는 경우에 유용합니다.

이 설정은 이 변경 내용을 리포지토리에 푸시한 후 컨테이너를 다시 빌드하거나 새 codespace를 만들 때 적용됩니다. codespace에 구성 변경 내용 적용에 대한 자세한 내용은 [개발 컨테이너 소개](/ko/codespaces/setting-up-your-project-for-codespaces/adding-a-dev-container-configuration/introduction-to-dev-containers)을(를) 참조하세요.

#### 사용자 지정 Dockerfile 사용

사용자 지정 Dockerfile을 사용하는 경우 `ENV VARNAME=value`을(를) 추가하여 환경 변수를 설정할 수 있습니다.

이 메서드는 Dockerfile이 이미 있고 컨테이너 전체 수준에서 변수를 설정하려는 경우에 유용합니다.

이 설정은 이 변경 내용을 리포지토리에 푸시한 후 컨테이너를 다시 빌드하거나 새 codespace를 만들 때 적용됩니다. codespace에 구성 변경 내용 적용에 대한 자세한 내용은 [개발 컨테이너 소개](/ko/codespaces/setting-up-your-project-for-codespaces/adding-a-dev-container-configuration/introduction-to-dev-containers)을(를) 참조하세요.

#### 개발 환경 비밀 사용

개발 환경 비밀을 사용하여 리포지토리에 GitHub Codespaces 대해 만든 코드스페이스에 대한 사용자 지정 변수를 설정할 수 있습니다. 자세한 내용은 [GitHub Codespaces에 대한 계정별 비밀 관리](/ko/codespaces/managing-your-codespaces/managing-your-account-specific-secrets-for-github-codespaces)을(를) 참조하세요.

리포지토리에 일반 텍스트로 커밋하지 않으려는 환경 변수 값에 이 메서드를 사용해야 합니다.

이 설정은 다음에 이 리포지토리에 대한 codespace를 만들 때 또는 기존 codespace를 다시 시작할 때 적용됩니다.

### 생성하는 모든 코드를 위한 작업 공간의 경우

만든 모든 codespace에 대해 개인 설정된 환경 변수를 설정하려면 `dotfiles` 리포지토리의 파일을 사용하여 이 변수를 설정할 수 있습니다. 예: `VARNAME=value` 파일에 `.bash_profile` 추가 dot 파일에서 설정한 환경 변수는 개인용이며 다른 사용자에 대해 설정되지 않습니다. dot 파일에 대한 자세한 내용은 [계정에 대한 GitHub Codespace 개인 설정](/ko/codespaces/setting-your-user-preferences/personalizing-github-codespaces-for-your-account#dotfiles)을(를) 참조하세요.

## 임시 파일이 자동으로 삭제되지 않도록 방지

codespace를 만들면 리포지토리가 codespace의 `/workspaces` 디렉터리에 복제됩니다. 이 디렉토리는 컨테이너에 탑재되는 영구 디렉터리입니다. 파일 편집, 추가 또는 삭제를 포함하여 이 디렉터리 내에서 변경한 내용은 codespace를 중지하고 시작할 때와 codespace에서 컨테이너를 다시 빌드할 때 유지됩니다.

`/workspaces` 디렉터리 외부의 codespace에는 codespace를 빌드하는 데 사용되는 개발 컨테이너 이미지에 따라 달라지는 Linux 디렉터리 구조가 포함됩니다. `/workspaces` 디렉토리 외부의 파일을 추가하거나 변경할 수 있습니다. 예를 들어 새 프로그램을 설치하거나 파일(예: `~/.bashrc`)에서 셸 구성을 설정할 수 있습니다. 루트가 아닌 사용자는 특정 디렉터리에 대한 쓰기 액세스 권한을 자동으로 부여하지 않을 수 있지만 대부분의 이미지는 `sudo` 명령을 사용하여 이러한 디렉터리에 대한 루트 액세스를 허용합니다.

`/tmp` 디렉터리를 제외하고 `/workspaces` 외부에서는 codespace의 디렉터리가 컨테이너의 수명 주기에 연결됩니다. 즉, 코드 영역을 중지하고 시작할 때 변경 내용이 유지되지만 컨테이너를 다시 빌드할 때는 유지되지 않습니다. 디렉터리 외부에서 `/workspaces` 데이터를 보존하기 위한 symlink를 만드는 방법에 대한 자세한 내용은 [Codespace에서 컨테이너 다시 빌드](/ko/codespaces/developing-in-a-codespace/rebuilding-the-container-in-a-codespace#persisting-data-over-a-rebuild)을 참조하세요.

`/tmp` 디렉터리가 컨테이너에 탑재되어 있으므로 예외이지만 영구적이지는 않습니다. 따라서 `/tmp` 디렉터리의 내용은 다시 빌드를 통해 유지되지만 codespace가 중지될 때마다 지워집니다. 예를 들어 비활성 기간 후에 codespace 세션이 시간 초과되면 `/tmp` 디렉터리가 지워집니다. 자세한 내용은 [GitHub Codespaces에 대한 시간 제한 기간 설정](/ko/codespaces/setting-your-user-preferences/setting-your-timeout-period-for-github-codespaces)을(를) 참조하세요.

다음에 codespace를 시작할 때 사용할 수 있도록 하려는 임시 파일이 있는 경우 `/tmp` 디렉터리에 저장하지 마세요.

## 추가 참고 자료

* [Codespace에서 셸 변경](/ko/codespaces/customizing-your-codespace/changing-the-shell-in-a-codespace)