# 환경과 변수 (/ko/docs/workspaces/environments)

변수는 여러 곳에서 쓰는 값에 붙인 이름입니다. 기본 주소, 사용자 이름, 토큰 같은 것입니다. 요청의 아무 필드에나 `{{name}}`으로 쓰면 Echolot이 보낼 때
값을 넣습니다. 환경은 요청을 보낼 한 곳을 위한 값 집합으로, Local, Staging, Production 같은 것입니다. 환경을 전환하면 모든 요청이 그쪽으로
갑니다.

## 변수 사용 [#use-a-variable]

주소, 헤더, 매개변수, 본문, 인증 필드, 설정에 `{{name}}`을 입력하세요. Alpenglow에서는 모든 주소가 `{{baseURL}}`로 시작합니다.

```
{{baseURL}}/products/{{productId}}
```

필드에 `{{`를 입력하면 요청이 사용할 수 있는 변수 목록이 나옵니다. `{{$uuid}}`, 날짜, 해시, 다른 요청의 응답에서 가져온 값 같은
[동적 값](/docs/requests/dynamic-values)도 함께 나옵니다. 변수는 다른 변수를 담을 수 있습니다. `baseURL`이 `https://{{host}}/v1`일 수도 있습니다.

요청이 해석할 수 없는 이름은 필드에 표시되고, Echolot이 `{{productId}} is not defined` 또는 `the secret {{token}} has no value on this Mac`처럼
이유를 알려 줍니다.

## 변수가 정의되는 곳 [#where-variables-are-defined]

변수는 가장 넓은 수준부터 가장 가까운 수준까지 다섯 수준에 있습니다.

| 수준 | 편집하는 곳 | 저장되는 곳 |
| --- | --- | --- |
| **전역** | **환경 › 전역** | 모든 작업 공간에서 쓰도록 이 Mac에만. |
| **작업 공간** | **환경 › 작업 공간** 또는 **작업 공간 설정… › 변수** | `workspace.toml` |
| **환경** | **환경 ›** 해당 환경 | `environments/<name>.toml` |
| **폴더** | **폴더 설정… › 변수** | 폴더의 `_folder.toml` |
| **요청** | 요청의 **변수** 탭 | 요청의 파일 |

비밀이 아닌 값은 입력하는 대로 이 파일들에 기록됩니다. 비밀 값은 절대 기록되지 않습니다. [비밀 값](/docs/workspaces/secrets)을 참조하세요.

## 어떤 값이 우선하는가 [#which-value-wins]

같은 이름이 여러 수준에 정의되어 있으면 가장 가까운 것이 우선합니다.

1. 요청 자체의 변수.
2. 요청의 폴더, 그다음 가까운 쪽부터 바깥으로 위의 폴더들의 변수.
3. 활성 환경의 변수.
4. 작업 공간의 변수.
5. 전역 변수.

그래서 작업 공간에는 기본값이 있고, 환경은 해당 서버에서 달라지는 것을 바꾸며, 폴더나 요청은 둘 다 재정의할 수 있습니다. 꺼진 변수(체크박스를 해제한
것)는 건너뛰고 다음 수준의 값이 사용됩니다.

Alpenglow에서 `baseURL`은 작업 공간에서 `https://demo.echolot.dev/v1`입니다. **Staging**이 활성이면 Staging도 이 변수를 정의하므로
`https://staging.alpenglow.example/v1`이 됩니다. **환경 없음**이면 요청은 작업 공간의 값을 사용하여 데모 API로 갑니다.

스크립트가 실행되는 동안 설정한 값(`pm.environment.set` 등)은 그것을 실행한 윈도우나 명령이 끝날 때까지만 유지되며 파일에는 절대 기록되지 않습니다.
[스크립트와 테스트](/docs/requests/scripts-and-tests)를 참조하세요. [응답 캡처](/docs/requests/captures)는 다릅니다. 가져온 값을 작업 공간 또는
환경 변수에 저장합니다.

## 환경 선택 [#choose-an-environment]

환경 메뉴는 모든 페이지의 페이지 헤더에 있습니다. 활성 환경이 점과 함께 표시됩니다. 환경은 초록색, [보호된 환경](/docs/workspaces/protected-environments)은
빨간색, **환경 없음**은 회색입니다.

클릭해서 환경을 선택하거나, 작업 공간의 값만 사용하려면 <strong>환경 없음</strong>을 선택하세요. <strong>환경 관리…</strong>는 환경 페이지를 엽니다.

<Shot id="workspaces-environment-menu" alt="열려 있는 페이지 헤더의 환경 메뉴: 환경 없음, Local, Staging, 방패가 붙은 Production" />

선택은 윈도우와 이 Mac에 속합니다. 작업 공간에 기록되지 않으므로 환경을 선택해도 어떤 파일도 바뀌지 않으며, 팀원은 각자 선택합니다. Echolot은 작업
공간별로 선택을 기억해 두었다가 다음에 열 때 다시 선택합니다.

[실행](/docs/requests/runner), 플로, [빠른 보내기](/docs/mac/quick-send)도 윈도우의 활성 환경을 사용합니다. 명령줄에서는 `--env`로 환경을
선택합니다.

```sh
echolot run Alpenglow.echolot --env staging
```

`--env`에는 `.toml`을 뺀 환경의 파일 이름 또는 환경의 이름을 쓸 수 있습니다.

## 환경 페이지 [#the-environments-page]

<strong>보기 › 환경</strong>(<kbd>⌥</kbd><kbd>⌘</kbd><kbd>E</kbd>) 또는 환경 메뉴의 <strong>환경 관리…</strong>로 엽니다. 왼쪽에는 다음이 있습니다.

- **기본값**: **전역**과 **작업 공간**.
- **환경**: 환경마다 한 행. **활성**은 윈도우가 사용하는 환경을 표시하고, 방패는 보호된 환경을 표시합니다.

행을 선택하면 오른쪽에서 그 변수를 편집합니다.

<Shot id="workspaces-environments-page" alt="Staging이 선택된 환경 페이지: 이름, 보호됨 스위치, 변수 baseURL, wsURL, password" />

### 환경 추가 [#add-an-environment]

1. 환경 페이지에서 **환경** 옆의 **+**(**환경 추가**)를 클릭합니다.
2. `New Environment`라는 새 환경이 열립니다. 이름 필드에 이름을 입력하고 <kbd>↩</kbd>를 누릅니다.
3. 이 서버에서 달라지는 변수를 추가합니다.

환경은 각각 `environments/`의 파일입니다. 페이지는 변수 아래에 파일 이름을 `파일: environments/staging.toml`처럼 표시합니다.

### 변수 편집 [#edit-variables]

각 행에는 다음이 있습니다.

| 열 | 하는 일 |
| --- | --- |
| 체크박스 | 변수를 제거하지 않고 켜거나 끕니다. |
| **이름** | `{{…}}`에 쓰는 이름. |
| **값** | 값. 비밀 값이면 값을 키체인에 저장하는 필드. |
| **비밀 키** | 값을 파일이 아닌 이 Mac의 키체인에 보관합니다. [비밀 값](/docs/workspaces/secrets)을 참조하세요. |
| **−** | 변수를 제거합니다. |

새 행을 추가하려면 **변수 추가**를 클릭하세요. Echolot은 입력을 멈춘 직후 잠시 뒤에 표를 저장하며, 모든 변경은 **편집 › 실행 취소**로 되돌릴 수
있습니다.

환경에는 작업 공간과 다른 변수만 있으면 됩니다. 나머지는 모두 작업 공간의 기본값에서 가져옵니다.

### 환경 이름 변경, 보호, 삭제 [#rename-protect-or-delete-an-environment]

환경 상단에서 다음을 할 수 있습니다.

- 이름 필드는 환경의 이름을 바꿉니다. 파일 이름은 그대로이므로 파일을 가리키는 것은 계속 찾을 수 있습니다. 이 페이지에서 추가한 환경은
  `New Environment`로 시작하므로, 나중에 이름을 무엇으로 바꾸든 파일은 `new-environment.toml`입니다. `--env`는 이름도 받습니다.
- **보호됨**은 그 환경으로 보내는 모든 전송이 먼저 묻도록 만듭니다. [보호된 환경](/docs/workspaces/protected-environments)을 참조하세요.
- <strong>환경 삭제…</strong>는 먼저 묻고 파일을 휴지통으로 이동합니다. 활성 환경이었다면 윈도우가 <strong>환경 없음</strong>으로 전환됩니다.

### 전역 변수 [#global-variables]

**전역**에는 사용자의 이름처럼 이 Mac의 모든 작업 공간을 위한 변수가 있습니다. 가장 넓은 수준이므로, 같은 이름의 작업 공간, 환경, 폴더, 요청
변수가 이를 재정의합니다. 어떤 작업 공간에도 속하지 않으므로 팀원과 명령줄 도구에는 보이지 않습니다.

## 값의 출처 확인 [#see-where-a-value-comes-from]

**보기 › 변수 보기**(<kbd>⌥</kbd><kbd>⌘</kbd><kbd>V</kbd>)는 변수 패널을 엽니다. 현재 요청이 볼 수 있는 모든 변수를 전역, 작업 공간, 각 환경, 요청의
폴더, 요청별 열로 보여 줍니다. 사용 중인 값은 표시되고, 활성이 아닌 환경은 비교를 위해 함께 나옵니다. 비밀 값은 가려진 상태로 유지됩니다. 열의 제목을
클릭하면 그것을 편집하는 곳으로 이동합니다. 패널을 고정하면 페이지 옆의 열로 유지됩니다.

<Shot id="workspaces-variables-panel" alt="Catalog › Get product 위의 변수 패널: 작업 공간, Local, Staging, Production 열의 baseURL과 productId, 사용 중인 값이 표시됨" />

요청 필드의 `{{variable}}` 위에 포인터를 올려 두면 훑어보기가 나타납니다. 값, 어느 수준에서 오는지, 그 위치에서 패널을 여는 <strong>모든 변수…</strong>가
표시됩니다.
