리눅스 시스템의 이해 - 셸 변수 & 환경 변수

2022. 1. 24. 11:10리눅스마스터 1급 - 필기/리눅스 실무의 이해

셸 변수 : 특정한 셸(shell)에서만 적용되는 변수를 말합니다.

리눅스의 표준 셸인 /bin/bash의 경우 변수명=변수값의 형태로 지정하여 사용할 수 있습니다. /bin/csh의 경우 변수를 선언하기 위해서는 set을 사용해야 하며 set 변수명=변수값의 형태로 사용합니다.

변수에 저장된 값들을 읽기 위해서는 echo $변수명 를 사용하면 됩니다.

 

선언한 변수를 해제 하기 위해서는 unset을 사용하면 됩니다. 이는 bash과 csh 둘다 해당됩니다.

 

1. /bin/bash

 

 

2. /bin/csh

 

 

환경 변수 : 시스템의 속성, 셸의 환경을 정의하는 중요한 역할을 수행하는 변수를 말합니다.

환경 변수들은 이미 정해진 변수명을 사용합니다.

환경 변수의 값 확인은 셸 변수와 동일하며 현재 시스템에 설정되어 있는 셀 변수, 환경 변수, 함수들은 set 명령어를 통해 확인 할 수 있고 환경 변수들만 확인 하고자 할때는 env 명령어를 사용하면 됩니다. 현재 사용자에 부여된 셸을 확인 할 때 사용했던 SHELL도 환경 변수 입니다. (echo $SHELL)

 

 

셸 변수와는 달리 환경 변수를 선언하기 위해서는 export 를 앞에 써줘야 합니다. 그냥 셸 변수처럼 선언을 하면 set에만 등록이 되고 export 명령어를 사용해서 변수를 선언해야 env에도 등록이 됩니다. export로 선언시 env, set 두곳에 등록됩니다. 

 

1. export 없이 변수 선언

 

2. export 사용해서 변수 선언

 

다양한 환경변수들중 주요 환경 변수는 무엇이 있는지 확인 알아보겠습니다.

 

HOME : 사용자의 홈 디렉터리 예) /home/keum

PATH : 실행 파일을 명령어 처럼 사용할 수 있도록 해줍니다. 실행 파일을 찾는 디렉터리 경로를 등록하는 변수입니다.

 

 

LANG : 셸에서 기본으로 지원되는 언어를 표시합니다. 오류 메시지가 한국어로 나올때 영어로 변경할 수 있습니다.

 

 

TERM : 로그인한 터미널 종류

 

 

PWD : 사용자의 현재 디렉터리

 

 

SHELL : 사용자의 로그인 셸

USER : 사용자의 이름

 

 

DISPLAY : X윈도에서 프로그램 실행 시 화면 출력을 위해 접속하는 X 서버의 장소를 의미합니다.

Ctrl + Alt + F(1~6)에서 F1이 리눅스를 처음 켰을때 화면입니다. 첫 화면은 :0으로 설정 되어 있습니다. F(2~6) 사이에 또다른 X 윈도 모드가 켜져있다면 그 화면은 :1이상으로 설정 되어 있을 겁니다.

 

 

PS1 : 1차 프롬프트 변수, 1차 프롬프트는 저희가 명령어를 입력하는 창을 말합니다.

 

프롬프트 변수란 [root@www ~]#의 형태를 바꾸는 것입니다.

d : 요일 월 일 형태로 날짜를 표시합니다.

h : 호스트 이름을 표시합니다.

s : 사용 중인 셸의 이름을 표시합니다.

\u : 사용자의 이름을 표시합니다.

\w : 현재 위치를 절대 경로로 표시합니다.

\W : 현재 위치를 마지막 디렉터리만 표시합니다.

 

다음과 같이 변경 할 수도 있습니다.

 

 

PS2 : 2차 프롬프트 변수, 2차 프롬프트는 1차 프롬프트에서 명령어를 입력 중 그 명령어가 완전히 끝나지 않았을 경우에 뜨게 되는 프롬프트입니다. 끝내지 않은 명령어를 2차 프롬프트에서 마무리 할 수 있도록 바뀝니다.

 

 

HISTFILE : 히스토리 파일의 절대 경로

지금까지 입력한 명령어들의 기록을 저장하는 파일의 위치입니다. 로그인을 하고 난 후부터 사용자가 입력한 모든 명령어들이 메모리에 기록되어 있다가 로그아웃을 하면 메모리에 기록된 명령어들을 파일에 저장합니다. 보통 이 파일은 각 사용자의 홈디렉터리 아래의 .bash_history 파일로 지정되어 있습니다.

 

 

HISTSIZE : 히스토리 파일에 저장되는 명령어의 개수

HISTFILESIZE : 히스토리 파일의 크기

 

 

HOSTNAME : 시스템의 호스트명

 

 

MAIL : 도착한 메일이 저장되는 경로

 

 

이번에는 환경변수의 값에 새로운 값을 추가하고 변경 해보겠습니다.

 

 

환경 변수 PATH에 /home/keum, keum 사용자의 홈 디렉터리 경로를 추가했습니다. 이제 keum 사용자의 홈 디렉터리 안에 실행 파일을 생성하면 어느 위치에서든 실행 파일을 명령어처럼 사용 할 수 있습니다. 

* 시스템은 실행파일을 PATH에 저장된 경로에서만 찾아봅니다. 그렇기 때문에 PATH에 저장되어 있지 않은 위치에 실행 파일이 있을 경우에는 시스템이 찾을 수 없습니다. 그래서 그런 경우에는 실행파일의 위치를 같이 입력 해줘야 했습니다.

여기서 killps는 실행파일명이라고 생각 하시면 됩니다.

예) /home/keum/killps, ./killps

실행파일 위치가 PATH에 등록된 경우

예) killps 실행파일의 이름만 입력해서 명령어 처럼 사용하면 됩니다.

 

* 이렇게 등록한 셸변수와 환경변수 값은 일시적입니다. 터미널을 재부팅하면 설정한 내용이 사라지기 때문입니다. 영구적으로 등록하기 위해서는 각 사용자의 홈디렉터리 안에 있는 파일(.bash_profile)에 등록해주어야 합니다.

ls -la 명령어로 숨겨진 파일들을 보면 bash 관련 파일들이 있는 것을 보실 수 있습니다.

그 중 .bash_profile 파일에 환경변수들을 등록해주면 영구적으로 등록이 되는 것입니다. 등록후 reboot 해주면 등록한 내용이 적용 된 것을 확인 할 수 있습니다.

 

 

HISTSIZE의 경우 HISTSIZE를 변경 해주면 HISTFILESIZE도 같이 변경 됩니다.

 

 

이상으로 이번 시간에는 셸 변수와 환경 변수에 대해 알아보았습니다.