SYSTEM

bash (2) 환경 변수 설정

마띠(쥔장) 2021. 3. 10. 17:54

지난 포스팅에서는 bash와 alias 관련 파일인 /etc/bash.bashrc, ~/.bashrc에 대해 공부했습니다.

파일명 설명
/etc/bash.bashrc 모든 사용자의 alias 관련 함수 설정 
~/.bashrc 개인 사용자의 alias 관련 함수 설정
/etc/profile 모든 사용자에게 적용되는 환경 변수, 시작 프로그램 등 일반 환경 설정 파일
~/.bash_profile 개인 사용자의 환경 설정과 시작 프로그램 설정 (일반 환경 설정 무시 가능)
~/.bash_logout 개인 사용자 로그아웃 시 지정 설정

이번 포스팅에서는 bash 환경 변수 설정에 대해 알아보겠습니다.

먼저 환경 변수란, 프로세스가 컴퓨터 내에서 동작하는 방식에 영향을 미치는, 동적인 값들로, 쉘에서 정의/실행되는 동안 프로그램에 필요한 변수를 말합니다. 리눅스에서의 환경 변수는 크게 3가지로 분류할 수 있습니다.

  • 로컬 환경 변수: 현재 세션에서만 동작하는 환경 변수
  • 사용자 환경 변수: 특정 사용자에 대해서만 정의된 환경 변수
  • 시스템 전체 환경 변수: 해당 시스템을 사용하는 모든 사용자를 대상으로 동작하는 환경 변수

(2) 환경 변수의 종류와 설정 방법

어떤 환경 변수가 어떤 방법으로 만들어지는 지를 보기 위해 VAR1부터 VAR6까지, 총 6개의 환경 변수를 만들어보았습니다. 아직 echo문(변수값 조회)은 찍지 않은 상태입니다.


1. VAR1: 'mika'로 로그온, [변수명]=[변수값] 형식

2. VAR2: 'mika'로 로그온, export [변수명]=[변수값] 형식

3. VAR3: 'mika'로 로그온, /home/mika/.bashrc에 [변수명]=[변수값] 형식

4. VAR3: 'mika'로 로그온, /home/mika/.bashrc에 export [변수명]=[변수값] 형식

5. VAR5: 'mika'로 로그온, /home/mika/.profile에 [변수명]=[변수값] 형식

6. VAR6: 'mika'로 로그온, /home/mika/.profile에 export [변수명]=[변수값] 형식

7. VAR7: 'root'로 로그온, /etc/bash.bashrc에 [변수명]=[변수값] 형식

8. VAR8: 'root'로 로그온, /etc/bash.bashrc에 export [변수명]=[변수값] 형식

9. VAR9: 'root'로 로그온, /etc/profile에 [변수명]=[변수값] 형식

10. VAR10: 'root'로 로그온, /etc/profile에 export [변수명]=[변수값] 형식


먼저 편집 내용을 적용했습니다.

이제 어떤 방식의 환경 변수 생성이 로컬/사용자/시스템 전체 환경 변수를 만드는지 알아보기 위해 이제부터 echo문을 확인해 값을 조회할 것입니다.

첫번째 조회 계정은 'mika'입니다. 

- (좌) 계정 전환(mika -> root -> mika)은 하였지만 로그오프는 하지 않았을 때

- (우) 로그오프 후 재접속 하였을 때

두번째 조회 계정은 'root'입니다. 

- (좌) 계정 전환(root -> mika-> root)은 하였지만 로그오프는 하지 않았을 때

- (우) 로그오프 후 재접속 하였을 때

마지막 조회 계정은 'matiii'입니다. 아무 변수도 만들지 않은 제 3자의 계정입니다.

- (좌) 계정 전환(root -> matiii)은 하였지만 로그오프는 하지 않았을 때

- (우) 로그오프 후 재접속 하였을 때


위 10가지 변수 생성과 조회를 통해 bash에서 환경 변수를 생성하는 것에 대한 정리를 해보겠습니다. 

- 일회성 환경 변수 설정:

  • export [환경변수명]=[환경변수값]
  • VAR1: 'mika'로 로그온, [변수명]=[변수값] 형식 -> 조회 x
  • VAR2: 'mika'로 로그온, export [변수명]=[변수값] 형식 -> 조회 o, 하지만 터미널에 재접속하면 조회 x

- 영구적 환경 변수 설정:

(1) 시스템 전체 환경 변수 설정

  • /etc/bash.bashrc 파일에 export [환경변수명]=[환경변수값] 또는 [환경변수명]=[환경변수값]을 작성 후 source 명령어를 통해 적용
  • VAR7: 'root'로 로그온, /etc/bash.bashrc에 [변수명]=[변수값] 형식 -> 어느 경우든 조회 o
  • VAR8: 'root'로 로그온, /etc/bash.bashrc에 export [변수명]=[변수값] 형식 -> 어느 경우든 조회 o
  • /etc/profile 파일에 export [환경변수명]=[환경변수값]을 작성 후 source 명령어를 통해 적용
  • VAR9: 'root'로 로그온, /etc/profile에 [변수명]=[변수값] 형식 -> 조회 x
  • VAR10: 'root'로 로그온, /etc/profile에 export [변수명]=[변수값] 형식 -> 어느 경우든 조회 o

(2) 사용자 환경 변수 설정

  • 해당 사용자 홈 디렉터리의 ~/.bashrc 파일에 [환경변수명]=[환경변수값]을 작성하면 해당 사용자만 조회 가능하고, 다른 사용자들은 터미널 재접속시 조회가 불가능하다. 대신 export [환경변수명]=[환경변수값]을 작성하면 모두가 조회 가능하다. 이후 source 명령어를 통해 적용한다.
  • VAR3: 'mika'로 로그온, /home/mika/.bashrc에 [변수명]=[변수값] 형식 -> mika 조회 o, 재접속시 root, matiii 조회x
  • VAR4: 'mika'로 로그온, /home/mika/.bashrc에 export [변수명]=[변수값] 형식 -> mika, root, matiii 조회 o
  • 해당 사용자 홈 디렉터리의 ~/.profile 파일에 [환경변수명]=[환경변수값]을 작성하면 재접속 시 모두가 조회할 수 없었다. ~/.profile 파일을 수정할 땐 꼭 export을 붙여 export [환경변수명]=[환경변수값] 형식으로 작성해야 한다. 이 방식으로는 모두가 조회 가능하다. 이후 source 명령어를 통해 적용한다.
  • VAR5: 'mika'로 로그온, /home/mika/.profile에 [변수명]=[변수값] 형식 -> 재접속시 mika, root, matiii 조회x
  • VAR6: 'mika'로 로그온, /home/mika/.profile에 export [변수명]=[변수값] 형식 -> mika, root, matiii 조회 o

이렇게 bash 환경 변수 설정에 대한 포스팅을 마치겠습니다. 다음 포스팅에서는 간단한 bash 스크립트를 짜보겠습니다.

728x90