리눅스 - 환경 변수

코린이·2024년 11월 10일

Linux

목록 보기
6/27

리눅스 - 환경 변수

리눅스는 다양한 어플리케이션 및 시스템 프로세스에 대응하기 위해 환경 설정(configuration)을 해야 하는데, 이때 사용되는 것이 환경 변수(environment variable)이다.

  • 리눅스에서 환경 변수(environment variable)는 프로세스가 실행되는 환경을 정의하는 키-값이다.

이러한 환경 변수는 주로 시스템 설정(System Configuration), 어플리케이션 설정(Application Configuration), 사용자 환경(User Context)에 주로 사용된다.

📌 시스템 설정(System Configuration)

  • 시스템의 기본 동작인 기본 경로(PATH), 언어 및 지역 설정(LOCALE), 시스템 설정 등을 통해 리눅스가 어떻게 동작할지 지정

📌 어플리케이션 설정(Application Configuration)

  • 데이터베이스 연결 정보, 파일 경로, 사용자별 설정 등을 환경 변수로 지정하여 애플리케이션이 실행 시 필요한 정보를 쉽게 불러올 수게 설정

📌 사용자 환경(User Context)

  • 사용자 기본 환경을 정의
  • 기본 셸(shell), 홈 디렉토리(HOME), 선호하는 텍스트 편집기 등의 사용자 설정이 환경 변수에 저장되어, 사용자 경험이 일관성 있게 유지

공통 환경 변수

📌 PATH

실행 가능한 파일의 디렉토리 경로를 정의, 이 변수를 통해 전체 경로 없이도 프로그램을 실행할 수 있다.

📌 HOME

현재 사용자의 홈 디렉토리를 나타냄. 홈 디렉토리는 사용자의 개인 파일과 설정이 저장되는 기본 위치이다.

📌 USER

현재 로그인한 사용자의 사용자 이름을 나타냄

📌 SHELL

시스템이 사용하는 기본 셸을 나타냄 (예: /bin/bash)

📌 TERM

사용 중인 터미널의 유형을 지정하여 터미널에 맞는 출력 형식을 설정

📌 PWD

현재 작업 중인 디렉토리를 나타냄

📌 LD_LIBRARY_PATH

공유 라이브러리를 찾기 위해 탐색할 경로를 지정

📌 PYTHONPATH

Python에서 모듈을 가져올 때 탐색할 디렉토리 목록을 지정

📌 JAVA_HOME

JDK 또는 JRE가 설치된 파일 시스템 위치를 지정


환경 변수 확인(View) 명령어

리눅스의 환경 변수를 확인(View)하는 명령어는 다음과 같다.

📌 env

모든 환경 변수를 나열

$ env
PATH=/usr/local/bin:/usr/bin:/bin    # "/usr/local/bin" and "/usr/bin" and "/bin" 총 3개의 경로를 의미
HOME=/home/username
USER=username
SHELL=/bin/bash
...

📌 printenv

모든 환경 변수를 나열 or 특정 환경 변수를 입력하여 해당 환경 변수값만 출력

전체 환경 변수 나열
$ printenv
PATH=/usr/local/bin:/usr/bin:/bin    # "/usr/local/bin" and "/usr/bin" and "/bin" 총 3개의 경로를 의미
HOME=/home/username
USER=username
SHELL=/bin/bash
...


특정 환경 변수(SHELL)만 출력
$ printenv PATH
/bin/bash

📌 set

모든 변수(환경 변수 + 셀 변수)를 나열

$ set
BASH=/bin/bash
TEST_VAR='Linux test value'   # 셀 변수
HOME=/home/username
PATH=/usr/local/bin:/usr/bin:/bin
USER=username
...

환경 변수 설정

환경 변수를 설정하는 방법은 크게 두 가지로 나뉜다.

1. export를 사용한 방식
export를 사용한 경우 변수는 현재 셀 뿐만 아니라 자식 프로세스에서도 사용할 수 있게 된다.

//변수 정의와 동시에 export
export TEST_VAR="Linux test value"

#기존 변수를 export
TEST_VAR="Linux test value"
export TEST_VAR

2. export를 사용하지 않는 방식
export를 사용하지 않은 경우 변수는 현재 셀에서만 사용 가능하다. (자식 프로세스에서 접근X)

#단순 변수 정의
TEST_VAR="Linux test value"

✅ 환경 변수 유지

일반적인 환경 변수(셀 변수 포함)는 유저가 로그인한 동안에만 유효하기 때문에 셀 세션이 종료되면 자동으로 삭제된다. 때문에 별도의 설정을 통해 환경 변수의 설정/세팅 값이 유지되게 할 필요가 있다. (매번 환경 변수를 세팅할 순 없음...)

이러한 환경 변수를 영구적으로 유지하려면, 셀 초기화 파일(/etc/profile, ~/.bashrc, ~/.bash_profile, ~/.profile 등)에export 명령어를 추가해야 한다.

  • 모든 유저에게 적용하고 싶으면 /etc/profile
  • 특정 유저에게만 적용하고 싶으면, ~/.bashrc, ~/.bash_profile, ~/.profile
파일명사용 대상실행 시점주요 용도
~/.bashrc비로그인 셸새로운 터미널 창 열릴 때별칭, 함수, 환경 변수 설정
~/.bash_profile로그인 셸로그인 시로그인 시 필요한 환경 변수 설정
~/.profile로그인 셸 (bash 외 다른 셸)로그인 시범용적인 로그인 환경 설정

이렇게 export 명령어를 추가하면, 로그인 할 때마다 자동으로 환경 변수가 설정된다.

~/.bash_profile을 예시로 하면 다음과 같다.

# vi 명령어를 사용하여 접근
vi ~/.bash_profile

# ~/.bash_profile 파일 접근 후 파일의 끝에 변수 추가
TEST_VAR="Linux test value"

# 파일 추가 후 변경사항 적용
source ~/.bash_profile

0개의 댓글