RSS구독하기:SUBSCRIBE TO RSS FEED
즐겨찾기추가:ADD FAVORITE
글쓰기:POST
관리자:ADMINISTRATOR

출처 : 대전국제IT교육센터 정성재 강사

 

1. bash에서의 쉘변수와 환경변수
(1) 쉘변수
   1) 개요: 말 그대로 특정한 쉘 즉 bash에서만 적용되는 변수를 말한다.
   2) 특징
    ㄱ. 지정하는 방법은 '변수명=값' 형태로 지정하면 된다.
       예) [posein@www posein]$ COLOR=red
    ㄴ. 변수값을 출력할 때는 변수명 앞에 $을 붙여 echo명령을 사용하면 된다.
       예) [posein@www posein]$ echo $COLOR
           red
(2) 환경변수: 모든 쉘에 영향을 미치는 변수라는 것을 제외하고는 쉘변수와 지정방법이나 특징이
              유사하다.
(3) bash에서 쉘변수를 환경변수화시키기: export명령을 사용하면 된다.

2. 일반적인 환경변수목록
(1) 환경변수
   1) HOME : 사용자의 홈디렉토리
   2) PATH : 실행파일을 찾는 경로
   3) LANG : 프로그램 사용시 기본 지원되는 언어
   4) PWD : 사용자의 현재 작업하는 디렉토리
   5) TERM : 로긴 터미널 타입
   6) SHELL : 로그인해서 사용하는 쉘
   7) USER : 사용자의 이름
   8) DISPLAY : X 디스플레이 이름
   9) VISUAL : visual 편집기의 이름
   10) EDITOR : 기본 편집기의 이름
   11) COLUMNS : 현재 터미널이나 윈도우 터미널의 컬럼수
   12) PS1 : 명령프롬프트변수
   13) PS2 : 2차 명령프롬프트이다. 명령행에서 \를 사용하여 명령행을 연장했을 때 나타난다.
   14) BASH : 사용하는 bash 쉘의 경로
   15) BASH_VERSION : bash의 버전
   16) HISTFILE : history 파일의 경로
   17) HISTFILESIZE : history 파일의 크기
   18) HISTSIZE : history에 저장되는 갯수
   19) HISTCONTROL : 중복되어지는 명령에 대한 기록 유무를 지정하는 변수이다.
   20) HOSTNAME : 호스트의 이름
   21) LINES : 터미널의 라인 수
   22) LOGNAME :로그인이름
   23) LS_COLORS : ls 명령의 색상관련 옵션
   24) MAIL : 메일을 보관하는 경로
   25) MAILCHECK : 메일확인시간
   26) OSTYPE : 운영체제 타입
   27) SHLVL :쉘의 레벨
   28) TERM :터미널종류
   29) UID : 사용자의 UID
   30) USERNAME : 사용자이름
(2) 사용예
   1) [posein@www /]$ mkdir $HOME/backup
      [posein@www /]$ ls -ld $HOME/backup
      drwxrwxr-x    2 posein   posein       4096  1월 15 01:31 /home/posein/backup
   2) [posein@www /]$ echo $PS1
      [\u@\h \W]\$
       => 프롬프트 형식
          \d : '요일 달 날짜'형태로 나타내준다. (예 "Wed Jan 15")
          \h : 호스트이름을 보여준다. 보통 '.'를 사용한 이름인 경우 첫번째 '.'까지 보여준다.
          \H : 호스트이름을 보여준다.
          \l : 쉘의 터미널 장치의 이름을 보여준다.
          \s : 쉘의 이름을 보여준다.
          \t : 24시 형태의 현재 시간을 보여준다. (예 HH:MM:SS)
          \T : 12시 형태의 현재 시간을 보여준다. (예 HH:MM:SS)
          \@ : am/pm 12시 형태의 현재시간을 보여준다.
          \u : 현재 사용자의 이름을 보여준다.
          \w : 현재 작업디렉토리를 보여준다.
          \W : 현재작업디렉토리의 마지막 디렉토리만 보여준다.
          \! : 현재 명령의 히스토리 넘버를 보여준다.
          \\ : \를 보여준다.
   3) [posein@www posein]$ PS1="[\u@\t \W]\$ "
      [posein@00:53:51 posein]$
       => 프롬프트에서 호스트이름대신에 현재시간을 표시하도록 설정하였다.

3. 환경변수관련 명령
(1) set : shell변수를 표시하고 값을 지정할 수 있다. C-shell에서는 변수와 값지정시에 필수적으
          로 사용해야 하지만, Bash에서는 변수와 값지정시에 꼭 set 명령을 지정하지 않아도 된다.
   1) 사용법
     set [option] [argument]
   2) option
     -o : 현재 set옵션의 상태를 표시한다.
   3) 사용예
    ㄱ. set
        => 옵션이나 인자가 주어지지 않으면 이미 지정된 shell변수와 함수이름,값이 표시된다.
    ㄴ. set -o
        => 현재 set옵션의 상태가 표시된다.
   4) 응용예
     [posein@www posein]$ a=1               // bash에서는 set 명령없이 "변수=값" 형태로 지정
                                              하면 된다. 확인은 인자없이 set 이라고 입력한다.
     [posein@www posein]$ echo $a
     1
      => 변수로 선언되었으므로 $a하면 1이라는 값이 출력된다.
     [posein@www posein]$ /bin/csh          // 임시로 C-shell로 전환.
     [posein@www ~]$
      => C-shell로 전환하면 프롬프트로 바뀜을 알 수 있다.
     [posein@www ~]$ b=2
     b=2: Command not found.
      => bash에서 변수지정하는 것처럼 하면 오류가 나타남을 알 수 있다.
     [posein@www ~]$ set b=2
      => C-shell 계열에서는 변수와 값지정시 set 명령을 사용해야 한다. 확인하려면 인자없이 set
        이라고 입력한다.
     [posein@www ~]$ echo $b
     2
       => 변수로 선언되었으므로 $b하면 2라는 값이 출력된다.

(2) env : 환경변수에 대한 정보를 보여준다.
   1) 환경변수란 : 로그인할 때나 새로운 쉘을 파생시킬 때 쉘의 환경을 정의하는 중요한 역할을
                  수행한다. env를 실행하면 환경 변수 설정값들을 확인할 수 있고 또한 각 환경
                  변수를 나타낼 때 변수이름앞에 $를 붙인다.
   2) 사용예
     [root@www /root]# env
      => 현재 시스템의 환경변수를 보여준다.
   3) 환경변수의 설정 : 값을 지정한후 export해야 한다. 현재 리눅스의 bash에서는 export를 생략
                       해도 반영된다.
     예) 패스변경하기
        [posein@www posein]$ echo $PATH
        /usr/kerberos/bin:/usr/local/bin:/bin:/usr/bin:/usr/X11R6/bin:/home/posein/bin
          => 현재 패스를 확인하면 홈디렉토리를 없다. 홈디렉토리를 추가해보자.
        [posein@www posein]$ PATH="$PATH:/home/posein"
        [posein@www posein]$ export PATH
        [posein@www posein]$ echo $PATH
        /usr/kerberos/bin:/usr/local/bin:/bin:/usr/bin:/usr/X11R6/bin:/home/posein/bin:/home/posein
(3) export : 쉘변수를 환경변수로 만들어주는 명령이다. 현재 리눅스 bash에서 일시적인 반영시에
             는 생략해서 사용할 수 있다.
   1) 사용법
     export 환경변수=변수값
   2) 사용예
    ㄱ. [root@www root]# export PATH="$PATH:/usr/local/apache/bin"
          => 현재 설정된 패스값에 /usr/local/apache/bin이라는 경로를 추가한다.
    ㄴ. [posein@www posein]$ PATH="$PATH:/home/posein"
          => 현재 설정된 패스값에 "/home/posein"이라는 경로를 추가한다. export명령을 생략해서
            사용해도 된다.
   3) 참고: export 명령은 쉘변수를 환경변수로 만들어 준다. 그러나, 쉘에서 export로 선언하여
           사용한 뒤에 로그아웃하게 되면 초기화된다. 따라서, 해당 환경변수의 값을 계속적으로
           반영되도록 하려면 /etc/profile(전체시스템)이나 ~/.bash_profile(개인사용자)파일안에
           선언하면 된다.

(4) unset : 선언된 변수를 제거하는 데 사용한다.
   1) 사용법
     unset 변수이름
   2) 사용예
     [root@www /root]# TEL=042
     [root@www /root]# echo $TEL
     042
     [root@www /root]# unset TEL
     [root@www /root]# echo $TEL   // 변수가 제거되었으므로 아무값도 출력되지 않는다.

(참고) bash에서는 환경변수를 만들 때 변수 값을 설정한 후, 환경에 변수를 익스포트(export)하는
       두 단계를 거친다.
   * 사용예
    [posein@www posein]$ echo $LANG       // 언어관련 환경변수값 확인
    ko_KR.eucKR
    [posein@www posein]$ date
    수  5월 21 01:28:56 KST 2003          // 한글로 표시된다.
    [posein@www posein]$ LANG=euc_UN      // 영어로 변경
    [posein@www posein]$ export LANG      // 일시적으로 변경할 경우에는 생략가능
    [posein@www posein]$ date
    Wed May 21 01:29:07 KST 2003          // 영어로 표시된다.


4. 명령어 히스토리(command history)
(1) history에 대하여
   1) 설명: bash에서는 입력하여 실행했던 모든 명령들은 히스토리 리스트 버퍼에 스택으로 저장된
           다. 이 기능은 반복하여 입력하거나 명령을 수정할 때 유용하게 쓰인다. 사용법은 방향키
           위/아래를 누르면서 사용가능하다. 히스토리 파일은 각 사용자의 홈 디렉토리에
           .bash_history라는 이름으로 존재하며 쉘 실행 중에는 메모리에만 명령어 히스토리를
           기억하고 있다가 로그아웃시에 .bash_history파일에 저장한다.
   2) 사용예
     [posein@www posein]$ history
      => 입력한 명령어들의 리스트를 보여준다.
(2) history 관련 변수
   1) 종류
     ㄱ. HISTSIZE : 히스토리 스택의 크기가 지정되어 있다. 단위는 명령의 개수이다. 이 변수의
                   설정값을 변경했을 경우 history명령을 내리면 해당개수만큼만 출력된다. 또한
                   방향키로 검색했을 경우에는 설정한 명령한 개수만 검색된다.
     ㄴ. HISTFILESIZE : 실질적인 히스토리파일의 크기이다.
     ㄷ. HISTFILE     : 히스토리 파일의 위치를 보여준다.
     ㄹ. HISTCONTROL : 중복되어지는 명령에 대한 기록 유무를 지정하는 변수이다.
   2) 사용예
     ㄱ. [posein@www posein]$ echo $HISTFILE
         /home/posein/.bash_history
     ㄴ. [posein@www posein]$ HISTSIZE=1
          => 실질적인 히스토리 파일의 스택크기가 1이 되므로 방향키로 조회해도 나오지 않는다.
(3) ! 과 히스토리 명령문 : 느낌표(!)를 이용하여 실행할 수 있다.
   1) 사용법
     !!  : 마지막으로 실행했던 명령문을 실행한다.
     !n  : n번째 실행한 명령문을 실행한다.
     !-3 : n번째 이전에 실행했던 명령문을 실행한다.
     !string : 가장 최근에 'string(문자열)'으로 시작하는 명령문을 실행한다.
     !?string? : 가장 최근에 실행했던 명령문중 string을 포함하고 있는 명령문을 실행한다.
                배포판에 따라 string뒤에 ?는 생략가능하다.
     ^string1^string2 : 마지막 실행 명령문의 string1을 string2로 대체한 후 실행한다.
   2) 사용예
     ㄱ. [posein@www posein]$ pwd
         /home/posein
         [posein@www posein]$ !!
         pwd
         /home/posein
           => pwd가 실행된다.
     ㄴ. [posein@www posein]$ !-4
         date
         수  5월 21 01:51:08 KST 2003
          => history 스택을 거슬러 4만큼 올라가서 해당 명령을 실행한다. 현재의 예제는 date
            명령임을 알 수 있다.
     ㄷ.[posein@www posein]$ !100
          => history의 번호중에서 100번 명령을 실행한다.
     ㄹ. [posein@www posein]$ set
         .....
         [posein@www posein]$ !s
          => 가장 최근에 's'로 시작하는 set명령이 실행된다.
     ㅁ. [posein@www posein]$ ls -alF
         .....
         [posein@www posein]$ !?al
          => ls -alF가 실행된다.
     ㅂ. [posein@www test]$ ls
         a.txt
         [posein@www test]$ cp a.txt b.txt
         [posein@www test]$ ^b.txt^c.txt
         cp a.txt c.txt
         [posein@www test]$ ls
         a.txt  b.txt  c.txt
(4) 참고 - history관련 테크닉
   1) [CTRL] + [r]
       => 명령프롬프트상태에서 이 키 조합을 누르면 검색할 수 있는 명령프롬프트가 뜬다. 이 때
         특정한 문자를 입력하면 가장 최근에 그 문자로 수행한 명령을 보여준다.
   2) [ESC] 후에 [.] 또는 [ALT] + [.]
       => 최근에 사용된 인자(argument)를 붙여준다. 텔넷으로 접속한 경우에는 [ALT]+[.]은 사용할
         수 없다.
   3) export HISTCONTROL=ignoreboth
       => 중복되어지는 명령어는 히스토리에 기억하지 않는다. 명령행에 입력하거나 계속적으로
         반영시키려면 .bashrc파일에 기록한다.

5. alias
(1) 개요 : 명령어에 별명(alias)를 만드는 것이다. 어떠한 명령에 기본으로 옵션을 추가시키거나
           자신만의 독특한 명령어를 만들 수 있다. 기본적으로 alias만 입력했을 경우에는 현재
           설정된 alias를 보여준다.
(2) 사용법
    alias 별명이름='실행될 명령의 정의'
(3) 사용예
   1) alias
       => 현재 설정된 alias를 보여준다.
   2) alias rm='rm -i'
       => rm명령에 기본으로 -i옵션을 부여하여 rm명령을 실행시킬때마다 확실히 지울 것인지 물어
         본다.
   3) unalias rm
       => rm에 설정된 ailas를 해제한다.
(4) 특징
    1) 일반쉘상태에서 alias를 설정한 뒤 로그아웃하면 그 설정은 무효가 된다.
    2) alias의 해제는 unalias명령을 이용한다.
    3) alias의 설정을 지속적으로 반영시키려면 ~/.bashrc파일안에 설정하면 된다.
(참고) ~/.bashrc파일안에 설정하면 다음 로그인부터 그 값이 반영된다. 만약 즉시 반영하고 원할
       경우에는 'source .bashrc'를 실행시키면 된다.

Trackback
Reply
우주곰:지구곰이 아닙니다.
지구곰이 아닙니다.
Categories (190)
Information (5)
About uzoogom (5)
My Advanced Linux (73)
Learning Linux (96)
OperatingSystem (5)
Databases (4)
OpenSource (1)
Tips! (1)
«   2024/04   »
1 2 3 4 5 6
7 8 9 10 11 12 13
14 15 16 17 18 19 20
21 22 23 24 25 26 27
28 29 30