리눅스에서 아주 쉬운 콘솔에서의 환경변수에 대해서 알아보자.
'환경변수' 라는 것은 그럴듯하게 어렵게 들릴수도 있겠지만 매우 쉬우며 어렵지 않다.
그냥 단순하게 환경의 조건을 정하는 것이다.
어떤 운영체제를 다룬다면 그 체제의 왕은 절대적으로 여러분이다.
그렇다. 여러분이 왕이 되어서 어떤 여러가지 문자를 함축적으로 정하는 것이다.
예를 들어,
"she=my love" 라고 정하고 싶다면 보통 프로그래밍 에서는 변수를 이렇게 설정한다.
she="my love"
그냥 바로 이거다. 이것이 변수라는 것이다.
얼마나 쉬운가?
여기에서 변수에 환경이란 말을 더하여 콘솔에서의 '환경변수'를 절대적으로 정한다고 한다면 터미널에 그저 'export'를 앞에 갖다 붙히기만 하면 되는 것이다.
자 그러면 터미널에서 그것을 한번 시험해 보도록 하자.
// 환경변수를 지정한다.
root@test:~$ export she="my love"
// 지정된 환경변수를 불러온다.
root@test:~$ echo $she
my love
-> 'she'에 대한 환경변수가 출력 되는데 성공했다.
보시는 바와 같이 "my love" 라는 글이 출력 되는 것을 볼 수가 있다.
그리고 중요한 것은 그것을 불러오는 명령에서 she 앞에 '$'를 붙였다는 것이다.
'$' 문자는 유닉스 시스템의 쉘 스크립트 에서 변수를 불러오는 매우 중요한 담당 역할을 하는 문자 이다.
하지만 이와 같은 단순한 환경변수 지정은 여러분이 연 그 터미널에서만 변수로 동작하며 다른 터미널 콘솔 에서는 변수로 지정 되지 않는다.
그렇다면 변수를 계속 유지되도록 전역설정을 하려면 어떻게해야 할까?
이는 '$/HOME/.bashrc' 파일에 해당 스크립트를 입력하여 처리가 가능하다.
($HOME = /home/user)
// 먼저 만일을 대비해서 bashrc의 백업을 만든다. (물론 부팅시를 기준으로 한 백업 파일인 '$HOME/.bashrc~'가 존재 한다.)
root@test:~$ cp ~/.bashrc ~/.bashrc.bak
// .bashrc 파일에 추가할 환경변수를 삽입 한다.
root@test:~$ echo 'export she="my love"' >> ~/.bashrc
// 재부팅 할 필요 없이 '~/.bashrc' 파일의 소스를 로드한다.
root@test:~$ source ~/.bashrc
// 지정된 환경변수를 불러온다.
root@test:~$ echo $she
my love
-> 'she'에 대한 환경변수가 출력 되는데 성공했다.
이와 같은 환경변수는 전역 bash 프로그래밍에서 활용되며 여러 소프트웨어들이 이러한 환경변수를 활용한다.
대표적으로 많이 사용되는 환경변수들은 다음과 같다.
환경변수 | 설명 |
$HOME | 사용자의 홈 디렉토리 |
$PATH | 실행 파일 경로 |
$LANG | 환경변수에 설정된 언어 |
$PWD | 사용자의 현재 작업중인 디렉토리 |
$SECONDS | 해당 콘솔이 실행된 경과를 초 단위 시간으로 나타냄 |
$SHLVL | 사용되는 쉘 레벨 |
$SHELL | 사용되는 쉘 이름($BASH와 같게 나옴.) |
$PPID | 부모 프로세스의 PID |
$BASH | BASH 실행 파일 경로 |
$BASH_VERSION | 설치된 BASH 버전 |
환경변수에 설정된 메일주소 | |
$OSTYPE | 운영체제 종류 |
$TERM | 현재 사용되는 터미널 이름 |
$HOSTNAME | 호스트 전체 이름 |
$HOSTTYPE | 시스템의 아키텍처 |
$MACHTYPE | PC의 아키텍쳐와 운영체제표시 |
$LOGNAME | 로그인 사용자 이름 |
$UID | 사용자 UID |
$EUID | su 명령에서 사용하는 사용자의 유효 아이디 값(UID와 EUID 값은 다를 수 있음) |
$USER | 사용자의 이름 |
$HISTFILE | history파일의 경로 |
$DISPLAY | 현재 사용되는 X 디스플레이 이름 |
-----------------------------------------------------------------------------------------------------------------------------------------------------------------
1. 환경 변수 살펴보기
- bash 쉘은 쉘 세션과 작업 환경에 대한 정보를 저장하기 위해 환경 변수라는 기능을 사용함
- bash 쉘의 두 가지 환경 변수 유형
1). 전역 변수
2). 지역 변수
1.1 전역 환경 변수 살펴보기
- 전역 환경 변수는 쉘 세션 및 그로부터 파생된 자식 서브쉘에서 볼 수 있음
- 전역 환경 변수를 보려면 env 또는 printenv 명령을 사용
(개발 환경 변수의 값을 표시하려면 printenv 명령만 사용 가능)
- echo 명령과 환경 변수 이름 앞에 $ 표시로도 환경 변수 참조 가능
- 변수 이름 앞에 달러 기호를 붙이면 변수를 명령의 매개변수로 전달 가능
- 전역 환경 변수는 어떤 프로세스의 서브쉘에서든 사용 가능함
- 서브쉘에서 HOME 환경 변수의 현재 값이 부모 쉘에 표시된 값과 정확히 똑같은 값인 /root로 설정되어 있는 것을 볼 수 있음
1.2 지역 환경 변수 살펴보기
- 지역 변수는 변수를 정의한 지역 프로세스에서만 볼 수 있음
- 지역 변수만을 표시하는 명령은 존재하지 않음
- set 명령은 특정 프로세스에 대한 모든 변수를 표시하며, 지역 및 전역 환경 변수와 사용자 정의 변수를 모두 포함함
2. 사용자 정의 변수 설정하기
2.1 사용자 정의 지역 변수 설정하기
- 숫자 또는 문자열 값을 등호로 변수에 묶음으로써 이 값을 변수에 지정 가능
- 빈 칸이 포함된 문자열 값을 지정해야 할 경우에는 문자열의 시작과 끝을 표시하기 위해서 작은따옴표나, 큰따옴표를 사용해야함
- 시스템 환경 변수는 모두 대문자를 사용하고 있는 것과는 달리 직접 정의한 지역 변수들을 소문자를 사용함
- 사용자 정의 my_variable 변수는 자식 쉘에서 사용할 수 없음 자식 쉘이 종료되고 원래의 쉘로 돌아간 뒤, 지역 변수를 다시 사용 가능
- 이와 비슷하게, 자식 프로세스에서 지역 변수를 설정한 경우 자식 프로세스를 떠나면 그 지역 변수를 더는 사용할 수 없음
- 사용자 정의 지역 변수를 전역 환경 변수로 바꾸면 이러한 특성을 바꿀 수 있음
2.2 사용자 정의 전역 환경 변수 설정하기
- 먼저 지역 변수를 생성하고 그 변수를 export명령과 달러 기호($)를 뺀 변수 이름을 사용해 전역 환경으로 내보냄
- 자식 쉘 안에서 전역 환경 변수를 변경하면 부모 쉘의 변수 값에는 영향을 주지 않음(변수의 값은 부모 쉘이 아닌 자식 쉘 안에서만 바뀌었음)
- 자식 쉘 안에서 export 명령을 사용해도 자식 쉘은 부모 쉘의 전역 환경 변수 값을 변경할 수 없음
3. 환경 변수 제거하기
- unset 명령을 사용하여 지역 환경 변수를 제거할 수 있음.
- unset 명령에서 환경변수를 참조할 때에는 달리 기호를 사용하지 않음!
- 변수 값을 변경할 떄와 마찬가지로 부모 쉘에서 생성된 환경 변수는 자식 쉘에서는 unset할 수 없으며 부모 쉘에서 unset 되어야 함
4. 기본 쉘 환경 변수 들여다보기
- 원래의 유닉스 Bounrce 쉘과 호환되는 bash 쉘의 환경 변수
작..성..중
참조
https://blog.naver.com/gloriamok/222660313703
6장. 리눅스 환경 변수 사용하기
리눅스 커맨드라인 쉘 스크립트 바이블 p.161-187 제 1부 리눅스 커맨드라인- 6장. 리눅스 환경 변수 사용...
blog.naver.com
'Linux > Linux공통' 카테고리의 다른 글
[Linux] 기본 명령어 및 shell script 기초 (0) | 2022.12.07 |
---|---|
[Linux] Raw Device에 대한 이해 (0) | 2022.12.01 |
[Linux] Linux - chmod 명령어 사용 방법 (권한, 모드 변경) (1) | 2022.11.21 |
[Linux] 윈도우 -> 리눅스 파일 옮기기 (0) | 2022.11.21 |
[Virtual Box] 공유 폴더 설정하기 (0) | 2022.11.19 |