HOW TO HACK/Basics

해커라면 알아야 할 리눅스 기초-8 : 환경변수 조회, 추가, 수정

Mr. Rootable 2016. 4. 14. 14:23

# 본 게시글은 작성자 본인의 스터디 목적으로 작성된 글입니다.


# 본 게시글에는 일부 잘못된 정보가 포함되어있을 수 있습니다.


# 이 글을 열람하는 것은 위 사항에 동의하는 것으로 간주합니다.


# 잘못된 정보에 대한 태클 및 지적질 적극 환영합니다.



환경변수는 현재 사용하고 있는 쉘(bash 등)의 실행파일에 대한 위치를 저장하는 변수를 말한다.

환경변수는 변수명과 값으로 구성된다.

리눅스시스템 운영을 최적화하기 위해서는 이 환경변수를 이해하고, 환경변수를 다루는 법을 알고 있어야 한다.



Step 1 : 환경변수 조회 (set, env)


set 명령어는 로컬(지역) 환경변수를 볼 수 있고, env 명령어는 글로벌(전역) 환경변수를 조회할 수 있다.

글로벌 환경변수는 로컬 환경변수의 상위개념으로 보면 된다.



* 로컬(지역) - 사용자 개개인을 위한 설정 내용이며, 특정 사용자에게만 적용된다. 대개 사용자의 홈디렉토리에 숨김파일로 존재함.


* 글로벌(전역) - 쉘을 사용하는 모든 사용자에게 적용되는 설정 내용이며, 일반적으로 /etc 디렉토리에 위치함.


물론 set과 env 명령어를 통해 환경변수의 셋팅도 가능하나, 환경변수를 조회하는 것만 우선 살펴볼 것이다. 


먼저 set 명령어를 사용해보자.


Usage : set [옵션] [변수]


# set



set 명령어는 사용자 정의 함수, 별칭(aliases) 목록을 알려준다.


Usage : env [옵션] [변수=값] [명령 [인수...]]


# env



일반적인 환경변수는 다음과 같은 것들이 있다. 아래 소개한 환경변수 외에도 많이 있으니 다른 문서를 통해 스스로 공부하길 권한다.


HOME : 사용자 홈디렉토리

PATH : 실행파일을 찾는 경로

LANG : 프로그램 사용시 기본으로 지원되는 언어

PWD : 현재 작업 디렉토리

TERM : 로그인 터미널 타입

SHELL : 사용하는 쉘

USER : 사용자 이름

HISFILE : history 파일 경로

HISTSIZE : history 파일 크기 

BASH : 사용하는 bash 쉘 경로


각 환경변수의 저장된 값은 echo 명령어를 통해 확인할 수 있다.

환경변수명 앞에는 $를 반드시 붙혀줘야 한다.


# echo $HOME



# echo $PATH




Step 2 : 쉘프롬포트 변경


쉘프로폼트는 PS1 변수에 저장되어있다.

먼저 그 내용을 확인해보자.


# echo $PS1



현재 PS1에 저장된 값을 보면 어떤 특정형식을 나타내는 기호들로 구성되어 있는 것 같다.

각 기호들의 의미는 아래 링크된 블로그를 통해 확인해보면 된다. 잘 정리되어있다. ㅋ


* PS1 변수에 사용되는 기호와 그 의미 : http://webdir.tistory.com/105 


재미삼아 이 프롬포트를 변경해보도록 하자.


# PS1="Mr.Rootable: #"



프롬포트가 Mr.Rootable: # 로 변경되었고, ls 명령어도 잘 실행되고 있다.


이 PS1변수는 위에서 소개한 블로그에도 설명되어있듯이

전체사용자에게 적용하려면 /etc/bashrc 파일에서 PS1 변수 셋팅 부분을 찾아 수정하면 되며,

개별사용자에게 적용하려면 해당 사용자의 홈디렉토리의 숨김파일인 .bashrc 파일에서 수정하면 된다.



Step 3 : 경로(PATH) 수정


리눅스를 사용할 때 가장 중요한 환경변수는 바로 PATH이다.

프로그램을 새로 설치한 경우, 이 PATH를 설정해줘야 하는 경우가 많다.

우선 현재 설정되어있는 값을 확인해보자.


# echo $PATH



스크린샷을 보면, 대개 시스템변수는 /bin과 /sbin 디렉토리에 있다.

즉, 사용자가 실행하는 명령은 $PATH에 저장된 디렉토리를 통해 알 수 있는 것이다.


새로 설치한 프로그램의 PATH를 추가하려면 아래의 명령을 통해 가능하다.

사용자 홈디렉토리에 .profile, .bash_profile 파일 중 하나의 맨 아랫줄을 보면

PATH=디렉토리경로:디렉토리경로:디렉토리경로 와 같은 부분이 존재하며,

이 부분을 수정하여 추가를 해주는 것이 가능하다.

이미 PATH에 값이 설정되어있다면 다음과 같은 명령어로 추가하는 것을 추천한다.


PATH = $PATH:디렉토리경로


편의상 늘상 해오던 nmap의 경로(/usr/share/nmap)를 추가하는 것으로 대신하겠지만

실제로 설치한 프로그램의 실행파일이 있는 디렉토리경로를 사용해야 한다.


# PATH=$PATH:/usr/share/nmap



PATH 환경변수에 정상적으로 추가되었다.<끝>