리눅스는 다양한 어플리케이션 및 시스템 프로세스에 대응하기 위해 환경 설정(configuration)을 해야 하는데, 이때 사용되는 것이 환경 변수(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)하는 명령어는 다음과 같다.
📌 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