Unix와 Linux에서는 OS에 의해 사용되는 기본적인 변수(시스템 변수)와 사용자 정의 변수로 나뉠 수 있다.
※ 일반적으로 시스템 변수는 대문자로, 사용자 변수는 소문자로 표기한다.
1. 시스템 변수
변 수 |
설 명 |
PS1 |
bash 쉘 프롬프트 |
PS2 |
쉘의 하위 프롬프트 설정 |
PS3 |
select 문에서의 프롬프트 |
PS4 |
bash의 debug 모드에서의 프롬프트 |
HOME |
사용자 홈디렉토리 |
PATH |
실행 파일의 디렉토리 경로 지정 |
BASH |
사용 쉘 및 경로 |
BASH_VERSION |
bash 쉘의 버전 |
ENV |
환경 설정 파일 |
USER |
사용자 |
USERNAME |
사용자 이름 |
SHELL |
지정한 쉘 및 쉘의 경로 |
MAIL |
메일 보관 디렉토리 경로 |
MAILCHECK |
메일 확인 주기 |
MAILPATH |
사용자 메일 경로 설정 변수 |
UID |
사용자 UID 값 |
GID |
사용자 GID 값 |
LOGNAME |
현재 로그인한 사용자 |
LINES |
터미널의 출력 라인 수 |
HOSTNAME |
호스트 이름 |
HOSTTYPE |
현재 시스템의 CPU 타입 |
HISTFILESIZE |
히스토리 파일 크기 |
HISTSIZE |
히스토리 사용 개수 |
OSTYPE |
운영체제의 타입 |
PWD |
현재 디렉토리의 절대 경로 |
TERM |
현재 사용 중인 터미널의 종류 |
COLUMNS |
현재 사용 중인 터미널의 크기(기본 80컬럼) |
파일 출력 명령어 사용시 파일의 종류에 따라 컬러 사용 | |
IFS |
인자 분리 매개 변수 |
CDPATH |
디렉토리 패스 설정변수 |
SECONDS |
bash를 시작하여 경과된 시간 |
EUID |
현재 로그인한 사용자의 UID |
RANDOM |
임의의 정수를 생성하는 변수 |
IGNOREEOF |
입력행에서 EOF문자가 입력되었을 때 쉘의 종료를 제어 |
TMOUT |
지정한 시간에 프롬프트의 입력이 없다면 로그 아웃 |
이 외에도 많은 환경 변수들이 존재한다. 이는 env 명령어를 통해 확인 할 수 있다.
2. 특별 내장 변수
변 수 |
설 명 |
$$ |
현재 실행중인 프로세스의 PID |
$? |
마지막에 실행한 명령어의 종료값을 반환하며 실행한 명령어의 에러 및 정상 실행을 파악하기 위해 사용 |
$! |
마지막 자식 프로세스의 PID |
$# |
프롬프트 상에서 실행한 명령어나 함수에 의해 전달된 매개변수에 전달 된 인자의 총 개수 |
#0 |
명령어 실행 시 명령어를 저장하는 변수로 위치 매개변수라고 함 |
$1,$2… |
명령어에 전달된 전달 인수가 공백을 기준으로 각각 저장하며 위치 매개 변수라고 함 |
$* |
명령어에 전달된 전달 인수 전체를 하나의 문자열로 표시하며 전체가 큰 따옴표로 처리 |
$@ |
전달 인수를 문자열의 목록으로 표시하며 각 인자에 큰 따옴표로 처리 |
$_ |
프롬프트나 쉘에서 마지막에 전달된 명령어나 명령어에 전달된 인수 값을 저장하며 쉘명령어에 의해 설정 된 플래그 |
3. 일반 변수
사용자 정의 변수에 대해서는 크게 설명 할 것이 없다. 선언 하거나 대입 연산을 할 때는 변수의 이름만을 사용하고, 변수의 값을 참조 할 때는 변수 앞에 $를 붙여 준다. 또한 변수선언을 할때 공백문자가 들어가면 안된다.
my_name="kukuta" # my_name = "kukuta" (X)
echo $my_name