[Linux] 리눅스 기본 활용 - 환경변수의 이해

Hyunjun Kim·2025년 3월 22일
0

Data_Engineering

목록 보기
6/153

8. 환경변수의 이해

환경변수란?

환경변수는 운영체제 수준에서 선언하는 변수이다.
운영체제 해당 환경에서 실행되는 프로세스가 모두 참조할 수 있다.
선언하기에 따라서 내가 접속하고 있는 환경에서만 참조할 수도 있다.

대표적으로 다음과 같은 경우에 사용한다.

  • 변수에 자주사용하는 경로를 저장한다. 예) HOME
  • 기존에 있는 변수를 이용한 새로운 변수를 저장한다. 예) PATH=SPATH:newpath
  • 프로세스가 구동중에 참조할 값을 미리 환경변수에 할당하고 프로세스를 실행한다.
  • 여러개의 프로세스가 참조해야하는 값을 환경변수에 할당한다. 예) SLD_LIBRARY_PATH
    (내가 내 어플리케이션에 쓸 걸 내 어플리케이션에 선언할 수 있지만 운영체제에 선언할 수 있다. 그리고 여러 개의 운영체제 프로세스가 동시 참조해야 되는 값을 환경 변수에 할당하기도 한다.)

환경변수를 임시로 선언하는 법

export 환경변수명=값 : 값을 환경변수로 임시 선언
이 경우 시스템 재부팅 또는 로그아웃을 하면 환경 변수 값이 사라지게 된다.

환경변수를 유저레벨로 선언하는 법

환경 변수를 특정 유저에게만 영구적으로 적용하고 싶은 경우에는 ~/.bash_profile 파일을 수정한다.
~/.bash_profile은 user 가 처음 login 할 때 수행된다.
단, bash shell 접속했을 때만 동작한다. sh 또는 zsh로 접속하면 동작하지 않는다.

  • vi ~/.bash_profile
  • export LECTURE="fastcampus" (bash_profile 안에서)
  • source .bash_profile
  • echo $LECTURE

환경변수를 영구히 선언하는 법

환경 변수를 모든 유저에게만 영구적으로 적용하고 싶은 경우에는
/etc/profile 파일을 수정한다.

  • sudo vi /etc/profile
  • export LECTURE="data-engineering"
  • echo $LECTURE

$PATH 이해

운영체제가 명령어의 실행파일을 찾는 경로

  • 절대/상대 경로 없이, 단독으로 명령어를 수행할 수 있다는 것은 해당 명령어의 실행파일이 운영체제의 $PATH 에 등록된 디렉토리들 중에 포함되어 있다는 의미이다.
  • which가 명령어 파일 위치를 찾는 원리
  • 내가 만든 실행파일의 위치도 $PATH 에 경로를 등록하면, 경로를 매번 입력하거나 찾지 않아도 바로 쓸 수 있다는 의미.

내가 어떤 명령어를 설치하고 어디서든 동작하게 하고 싶다면 그 명령어를 만들기만 할 뿐 아니라 만든 다음 path 경로 디렉토리에 위치시켜주던가 이 디렉토리 중에 하나로 옮겨주던가 아니면 path에 내가 선언한 그 명령어가 있는 디렉토리를 등록을 추가로 해줘야 함.

mkdir bin
cd bin
vi mycomand.sh
#!/bin/sh
echo $*

뒤에 넘긴 파라미터를 그대로 echo 해주는 프로그램.

chomod +x mycomand.sh
./mycomand.sh Leon is ausome

출력 : Leon is ausome

bin 디렉토리를 벗어나 mycommand 를 검색해도 찾을 수 없다.
그 경우 mycommand가 있는 경로를 PATH 에 추가해 보자

export PATH="$PATH:(mycomand pwd 경로)"

path에 등록된 경로에 mycommand.sh 가 있으니 다른 경로에서도 실행 가능.
하지만 로그아웃 하고 들어오면 path에서 사라져 있어서 mycommand는 찾을 수 없음.
이런 경우에는 이 디렉토리를 sudo vi /etc/profile 에 들어가서
export PATH=$PATH:(mycomand pwd 경로) 해줘야 로그아웃 해도 다시 추가되어 있을 수 있따.
다른 방법은 PATH에 이미 등록되어 있는 곳에 mycommand는를 옮겨 놓는 것이다.

profile
Data Analytics Engineer 가 되

0개의 댓글