Linux 시스템은 셸과 다른 프로세스가 접근할 수 있는 정보를 저장하기 위해 환경 변수를 사용합니다. 이 변수들에는 사용자 세션 및 시스템 구성에 대한 유용한 데이터가 포함되어 있습니다.
기본 환경 변수 탐색
$ 기호를 변수 이름 앞에 붙여 특정 변수의 값을 볼 수 있습니다. 예를 들어, 다음 명령을 실행해 보세요.
echo $HOME
이 명령은 홈 디렉터리의 경로를 표시하며, /home/pete와 유사하게 보일 수 있습니다.
이제 다른 것을 시도해 보세요.
echo $USER
이것은 현재 사용자 이름을 출력합니다. 하지만 이 정보는 어디서 오는 것일까요? 이는 셸의 환경에 저장되어 있습니다.
Linux 에서 env 는 무엇을 하는가
현재 세션에 설정된 모든 환경 변수를 보려면 env 명령을 사용할 수 있습니다. linux env command는 셸 구성을 검사하는 기본적인 도구입니다.
env
env 명령을 실행하면 키 - 값 쌍 목록이 출력됩니다. 표시될 수 있는 내용의 간단한 예는 다음과 같습니다.
PATH=/usr/local/sbin:/usr/local/bin:/usr/sbin:/bin
PWD=/home/user
USER=pete
linux env를 이해하는 것은 시스템을 효과적으로 관리하는 데 매우 중요합니다.
PATH 변수의 중요성
env linux 출력에서 가장 중요한 변수 중 하나는 PATH입니다. 다음을 사용하여 내용을 구체적으로 볼 수 있습니다.
echo $PATH
이 명령은 콜론으로 구분된 디렉터리 목록을 반환합니다. 명령을 입력하면 시스템은 해당 실행 파일을 찾기 위해 이 디렉터리들을 검색합니다.
/opt/coolapp/bin과 같이 표준적이지 않은 디렉터리에 프로그램을 수동으로 설치했다고 상상해 보세요. coolcommand를 입력하여 실행하려고 하면 "command not found" 오류가 발생할 수 있습니다. 이는 프로그램을 포함하는 디렉터리가 PATH 변수에 나열되어 있지 않아 셸이 어디서 찾아야 할지 모르기 때문에 발생합니다.
이 문제를 해결하려면 PATH 변수를 수정하여 새 디렉터리를 포함시켜야 합니다. 사용자 지정 디렉터리를 PATH에 추가하면 터미널 어디에서든 프로그램을 찾고 실행할 수 있도록 셸이 활성화됩니다.
현재 세션에 대한 환경 변수 설정
터미널에서 다음 명령을 실행하면 현재 세션에 대해서만 환경 변수 TEST가 설정됩니다.
export TEST=test
이후 다음을 실행하면:
echo $TEST
출력은 다음과 같습니다.
test
이 변수는 터미널 세션이 열려 있는 동안에는 사용할 수 있습니다. 터미널을 닫고 다시 열면 변수는 더 이상 존재하지 않습니다.
세션 간 환경 변수 영구화
환경 변수를 터미널 세션을 닫고 다시 열어도 모든 터미널 세션에서 사용할 수 있도록 하려면 셸 시작 파일에 추가해야 합니다. Bash(많은 Linux 배포판 및 macOS 의 기본 셸) 의 경우 이 파일은 일반적으로 홈 디렉터리의 .bashrc입니다.
다음은 그 방법입니다.
- 선호하는 텍스트 편집기로
.bashrc를 엽니다. 예를 들면 다음과 같습니다.
nano ~/.bashrc
- 파일 끝에
export줄을 추가합니다.
export TEST=test
-
편집기를 저장하고 종료합니다 (Nano 의 경우
Ctrl+X, 확인을 위해Y, 그리고Enter). -
터미널을 다시 열지 않고 변경 사항을 즉시 적용하려면 다음을 실행합니다.
source ~/.bashrc
이후 TEST 변수는 모든 향후 터미널 세션에서 사용할 수 있으며, 터미널을 닫고 다시 열어도 echo $TEST를 실행하면 test가 출력됩니다.
셸 구성 파일에 대한 참고 사항
- Bash (많은 시스템의 기본값) 의 경우 관련 파일은 비로그인 대화형 셸에 대해
~/.bashrc입니다. - Zsh의 경우 동등한 파일은 일반적으로
~/.zshrc입니다. - Fish의 경우 일반적으로
~/.config/fish/config.fish를 사용합니다.