Linux/Unix의 환경 변수 목록

⚡ 스마트 요약

리눅스와 유닉스에서 환경 변수는 프로그램과 셸의 동작 방식을 결정하는 동적인 명명된 값으로, 경로(PATH), 홈 디렉터리, 기본 편집기, 언어 및 현재 사용 중인 셸과 같은 설정을 저장합니다.

  • 🌱 그들이 무엇인지: 환경 변수는 프로세스에 영향을 미치는 동적 값을 저장하며 생성, 편집 및 삭제할 수 있습니다.
  • 🧭 통로: PATH 변수는 셸이 실행 가능한 명령을 찾고 실행하기 위해 검색하는 디렉터리 목록을 나타냅니다.
  • 🔎 읽기 값: echo 명령어는 하나의 변수만 표시하는 반면, env와 printenv는 모든 환경 변수를 나열합니다.
  • 🆕 생성 중: NAME=value 형식으로 값을 할당한 다음, 내보내기 기능을 사용하여 하위 프로세스에서 해당 값을 사용할 수 있도록 합니다.
  • 🗑️ 삭제 : `unset` 명령은 현재 셸 세션에서 변수와 해당 값을 제거합니다.
  • 💾 고집: 세션 간 변수 유지를 위해 ~/.bashrc 또는 /etc/environment 파일에 export 라인을 추가하세요.
  • 🤖 AI 도움말: AI 비서와 GitHub Copilot은 변수를 감사하고 이를 사용하는 셸 스크립트를 생성할 수 있습니다.

리눅스와 유닉스에서 흔히 사용되는 환경 변수 목록

환경 변수는 어떤 프로젝트를 진행하든 가장 먼저 이해해야 할 요소 중 하나입니다. Linux 유닉스 시스템에서는 관리자 파일(environment)이 프로그램과 셸의 동작 방식을 조용히 제어하기 때문에 매우 중요합니다. 이 가이드에서는 관리자 파일이 무엇인지, 가장 일반적인 관리자 파일은 무엇인지, 그리고 관리자 파일을 읽고, 생성하고, 삭제하는 방법을 설명합니다.

컴퓨팅 환경이란 무엇입니까?

컴퓨팅 환경은 플랫폼입니다(플랫폼 = 운영 체제 + 프로세서) 사용자가 프로그램을 실행할 수 있는 곳입니다.

변수란 무엇입니까?

컴퓨터 과학에서 변수는 파일 이름, 텍스트, 숫자 또는 기타 데이터와 같은 값을 저장하는 위치입니다. 변수는 일반적으로 생성 시 부여되는 기호 이름으로 참조됩니다. 저장된 값은 표시, 삭제, 편집 및 재저장할 수 있습니다.

변수는 프로그래머가 유연한 프로그램을 작성할 수 있도록 해주기 때문에 컴퓨터 프로그래밍에서 중요한 역할을 합니다. 변수는 사용하는 운영 체제와 연관되어 있으므로, 몇 가지 변수를 알고 변수에 영향을 미치는 방법을 알아두는 것이 중요합니다.

환경 변수란 무엇입니까?

환경 변수는 컴퓨터의 프로세스나 프로그램에 영향을 미치는 동적 값입니다. 모든 운영 체제에 존재하지만 유형은 다를 수 있습니다. 환경 변수는 생성, 편집, 저장 및 삭제할 수 있으며 시스템 동작에 대한 정보를 제공합니다.

환경 변수는 소프트웨어와 프로그램의 동작 방식을 변경할 수 있습니다. 예를 들어, `$LANG` 환경 변수는 사용자가 이해하는 언어를 저장합니다. 애플리케이션은 이 값을 읽어 중국어 사용자에게는 중국어 인터페이스를, 미국 사용자에게는 영어 인터페이스를 표시합니다.

이제 몇 가지 일반적인 환경 변수를 살펴보겠습니다.

변하기 쉬운 기술설명
PATH 이 변수에는 콜론(:)으로 구분된 시스템이 실행 파일을 찾는 디렉터리 목록이 저장됩니다. 터미널에서 명령어를 입력하면 셸은 $PATH 변수에 나열된 디렉터리에서 해당 명령어를 찾습니다. 명령어를 찾으면 실행하고, 그렇지 않으면 '명령을 찾을 수 없습니다'라는 오류 메시지를 반환합니다.
USER 사용자 이름
HOME 사용자 홈 디렉터리의 기본 경로
EDITOR 파일 내용을 편집하는 프로그램의 경로
UID 사용자의 고유 ID
TERM 기본 터미널 에뮬레이터
SHELL 사용자가 사용하는 쉘

변수 값에 접근하기

변수의 값을 확인하려면 echo 명령어를 사용합니다.

echo $VARIABLE

예를 들어, 아래 스크린샷은 echo 명령어를 사용하여 표시된 PATH 변수의 값을 보여줍니다.

echo 명령어를 사용하여 PATH 변수 값을 표시합니다.

모든 환경 변수는 동일한 방식으로 읽을 수 있습니다. 아래 출력은 echo 명령어가 변수 값을 반환하는 것을 보여줍니다.

echo 명령어의 출력 결과로 환경 변수 값이 표시됩니다.

변수는 대소문자를 구분하므로 변수 이름을 정확한 대소문자로 입력해야 합니다. 그렇지 않으면 원하는 결과를 얻지 못할 수 있습니다. 모든 환경 변수를 한 번에 나열하려면 아래와 같이 env 명령어를 사용하십시오.

터미널에 모든 환경 변수를 나열하는 env 명령어

새 환경 변수 설정

다음 구문을 사용하여 사용자 정의 변수를 만들 수 있습니다.

VARIABLE_NAME=variable_value

다시 한번 강조하지만, 변수 이름은 대소문자를 구분하며 일반적으로 대문자로 작성됩니다. 이렇게 생성된 변수는 현재 셸만 볼 수 있는 로컬 셸 변수입니다. 자식 프로세스도 상속받을 수 있는 환경 변수로 만들려면 `export` 명령어를 사용합니다.

export VARIABLE_NAME=value

아래 스크린샷은 새 변수가 생성된 후 echo 명령어를 통해 표시되는 모습을 보여줍니다.

새로운 사용자 정의 환경 변수 생성 및 표시

변수 삭제

다음 구문은 시스템에서 변수를 제거합니다.

unset variablename

이렇게 하면 아래와 같이 현재 셸 세션에서 변수와 해당 값이 제거됩니다.

unset 명령어를 사용하여 환경 변수를 제거합니다.

자주 묻는 질문

셸 변수는 현재 셸에만 존재하며 다른 프로그램으로 전달되지 않습니다. 환경 변수는 셸 변수를 내보낸 것으로, 해당 셸에서 시작된 자식 프로세스가 이를 상속받습니다. 변수를 환경 변수로 승격시키려면 `export` 명령어를 사용하십시오.

터미널에서 설정한 변수는 세션을 종료하면 사라집니다. 변수를 유지하려면 시작 파일(~/.bashrc 또는 ~/.profile은 단일 사용자용, /etc/environment는 시스템 전체 사용자용)에 export 줄을 추가하세요. 파일을 다시 로드하거나 터미널을 다시 열면 변경 사항이 적용됩니다.

기존 PATH 환경 변수를 덮어쓰지 않도록 새 디렉터리를 PATH에 추가하세요. `export PATH=$PATH:/your/new/directory` 명령어를 사용하면 셸이 명령어를 검색할 때 해당 폴더가 목록에 추가됩니다. 변경 사항이 새 세션에서도 유지되도록 하려면 동일한 명령어를 `~/.bashrc` 파일에 추가하세요.

printenv 명령어는 환경 변수만 나열하며, printenv HOME처럼 하나의 환경 변수만 표시할 수 있습니다. env 명령어 역시 환경 변수를 나열하고, 수정된 환경에서 프로그램을 실행할 수 있습니다. set 명령어는 내보낸 변수뿐만 아니라 셸 변수와 함수를 포함한 모든 환경 변수를 표시합니다.

이는 일반적으로 PATH 환경 변수에 추가하는 대신 덮어쓰기를 하여 셸이 표준 명령어를 더 이상 찾을 수 없게 된 경우입니다. PATH를 설정할 때는 항상 $PATH를 포함해야 합니다. 현재 세션에서 복구하려면 `export PATH=/usr/local/bin:/usr/bin:/bin` 명령을 실행한 다음 시작 파일에서 해당 명령어를 수정하십시오.

편리하긴 하지만 위험합니다. 환경 변수는 `/proc` 디렉토리에서 읽어올 수 있고, 자식 프로세스에 상속되며, 로그나 크래시 보고서에 노출될 가능성이 높습니다. 민감한 정보는 일반 변수 대신 전용 비밀 관리자나 권한이 제한된 암호화된 파일에 저장하는 것이 좋습니다.

AI 비서는 익숙하지 않은 변수의 기능을 설명하고, 구성 파일에서 누락되거나 중복된 항목을 검사하며, 변수에 실수로 노출된 비밀 정보를 표시할 수 있습니다. 또한 머신러닝 도구는 여러 서버에 걸쳐 프로세스 환경을 스캔하여 수작업으로 검토하기에는 너무 번거로운 잘못된 구성을 감지할 수 있습니다.

예. GitHub 부조종사 이 프로그램은 export 문, ~/.bashrc 편집, 그리고 $HOME이나 $PATH 같은 변수를 읽는 셸 스크립트를 생성할 수 있습니다. 입력하는 동안 구문 제안 기능을 제공하지만, 자격 증명을 처리하는 코드는 실행하기 전에 검토해야 합니다.

이 게시물을 요약하면 다음과 같습니다.