Linux 프로세스(실행중인 프로그램)는 프로그램 자체와는 다른 고유한 환경을 가진다.
쉘 환경이라고 부르는 Linux 환경은 수많은 변수의 값으로 이루어져 있다.
이런 변수와 값을 사용하여, 쉘과 같은 실행 프로그램이 Linux 환경의 모습을 판별할 수 있다.
환경이라고 하는 것은,
사용자가 사용하는 쉘, 홈 디렉토리, 사용 중인 터미널의 유형 같은 것들을 의미한다.
이런 변수들 중 대부분은 로그인 프로세스 중에 정의되며 변경할 수 없거나 변경해서는 안된다.
변수가 읽기전용이 아니라면 사용자가 추가하거나 변경할 수 있다.
변수는
VARIABLE=value 형식으로 설정된다.
VARIABLE 자리에는 사용자가 원하는 어떤것으로도 설정할 수 있다.
표준 Linux프로그램에 사전 정의된 변수들은 그대로 사용한다.
공통적인 Borne Shell 의 환경변수들
변수 |
설명 |
HOME=/home/login |
사용자가 시작하는 위치인 홈 디렉토리를 설정
왼쪽 login 부분을 login ID로 대체 하면, /HOME/login ID |
LOGNAME=login |
자동으로 login ID와 동일하게 설정됨 |
PATH=path |
쉘이 명령을 실행하기 위해서
명령에 대해 찾는 디렉토리 목록을 나타냄
PATH=/usr:/bin:/usr/local/bin 과 같이 설정 가능 |
PS1=prompt |
PS1은 프롬프트의 모습을 정의하는 1차 쉘 프롬프트
설정하지 않으면 프롬프트는 달러기호($)
원하는 경우 독창적으로 설정 가능
PS1-"linux #"으로 하면
명령어 프롬프트로 linux #을 표시 |
PWD=directory |
PWD는 자동으로 설정됨
사용자의 현재위치를 나타내 주는 역할
PWD를 사용했을 때, /home 이 표시되면,
사용자는 /home 디렉토리 밑에 있는 것 |
SHELL=shell |
사용자 쉘로서 기능하는 프로그램의 위치를 식별
.profile .login 파일에서
SHELL 을 SHELL=/bin/csh로 설정하여
로그인 쉘을 csh 등으로 설정 가능 |
TERM=termtype |
터미널 데이터 베이스에 의해 지정되는 대로
터미널 유형의 이름을 설정
.profile .login 파일에서 TERM-vt100 과 같이 설정 가능 |
PATH 변수는 콜론(:)으로 구분하여
사용자가 사용하는 프로그램을 포함하는 모든 디렉토리를 지정하는 문자열이 들어있다.
디렉토리가 나열되는 순서대로(왼쪽에서 오른쪽) 명령어를 탐색한다.
목록 순서는 동일한 명령의 여러가지 다른 양식을 지원하는 시스템에서 중요하다.
사용자가 자신의 명령어가 있는 디렉토리의 경로를 추가하려고 하는 경우,
PATH 변수를 수정하면 된다.
PATH=$PATH:
newPath
더보기
변수에 값을 넣을 때는
변수이름=값 과 같은 식으로 사용할 수 있다.
변수에 있는 값을 불러올때는
$변수이름 으로 값을 불러 올 수 있다.
즉 위의 명령 PATH=$PATH:newPath 는
기존에 PATH에 있는 값(현재 설정되어 있는 값)을 불러와서
추가적으로 newPath 를 덧붙여서 다시 PATH에 저장하는 것이다. 즉, 경로를 추가하는 것이다.
특수 환경변수의 예
변수 |
설명 |
HOME |
홈 디렉토리의 완전 경로명 |
SHELL |
현재 쉘의 이름 |
MAIL |
우편함의 전체 경로명 |
LOGNAME |
로그인 이름 |
PATH |
쉘이 명령을 탐색하는 디렉토리 |
TZ |
date 명령에 대한 시간대 |
SECONDS |
쉘을 호출한 이후의 시간(초) |
PS1 |
시스템 프롬프트 |
TERM |
사용중인 터미널의 유형 |
HOME 변수는 항상 홈 디렉토리를 지정한다. 로그인 하면 기본적으로 홈 디렉토리에 위치한다.
PATH 변수는 쉘이 명령을 탐색하는 디렉토리를 나열한다. 쉘은 디렉토리가 나열된 순서대로 명령어를 탐색한다.
MAIL 변수는 사용자의 전주 우편을 보유하고 있는 파일의 이름이 들어있다.
메일이 도착하면 메일은 MAIL 변수에 의해 지정되는 파일에 배치된다.
PS1 변수는 1차 프롬프트로서 표시되는 문자열을 보유한다.
프롬프트는 쉘이 명령을 수신할 준비가 될 때마다 표시하는 문자열이다.
TERM 변수는 터미널의 유형을 식별하는 데 사용된다.
vi 편집기와 같이 전체 화면을 사용하는 프로그램에서는 이 정보가 필요하다.
TZ 변수는 시간대를 식별하는 문자열을 보유한다. date 프로그램과 일부 다른 프로그램에서 이 정보가 필요하다.
LOGNAME 변수는 시스템이 사용자와 연관시키는 이름이나 문자열인 로그인 이름을 보유한다.
alias 명령은 명령어가 길거나 옵션을 일일이 지정하기 싫은 경우에
해당 명령어에 대해 사용자가 별명을 설정하여 사용 할 수 있도록 해준다.
alias
: alias 별명=' 명령어 [옵션]'
: 일반적으로 내리는 명령 대신하여 사용자 정의 명령을 만든다고 생각하면 된다.
만약 ls -al 옵션을 자주 사용하는 사용자라면 홈 디렉토리의 .bashrc 파일에 아래의 문장을 추가하여 사용할 수 있다.
alias ll=' ls -al'
이렇게 추가해 놓고, 쉘을 재동작 하고 나면 적용된다.
이후로는 ll 을 사용했을 때, ls -al 을 사용하는 것과 같다.
history
: 이전에 입력한 명령들을 보여준다.
!
: 뒤에 공백, 개행문자, =, ( 가 나오는 경우를 제외하고 히스토리 치환을 시작하도록 한다.
!!
: 이전 명령을 가리킨다. !-1 과 같다.
!n
: n번째 행의 명령을 가리킨다. !13 은 13행에 실행된 명령을 가리킨다.
!-n
: 현재 명령행에서 n을 뺀 행의 명령을 가리킨다.
!문자열
: 문자열로 시작하는 가장 최근 명령을 가리킨다.
!?문자열[?]
: 문자열을 포함하는 가장 최근 명령을 가리킨다.
^문자열1^문자열2
: 빠른 치환
: 지난 번 명령에 대해 문자열1을 문자열2로 바꾸어 실행한다.
: !!:s/문자열1/문자열2 와 같다
!#
: 지금까지 입력한 전체 명령행