교재: "국가공인" 리눅스마스터 1급 ((주)수퍼유저, 저자 박성수, 강기봉, 정우영)


국가공인 리눅스마스터 1급

저자
박성수강기봉 지음
출판사
수퍼유저코리아 | 2014-01-13 출간
카테고리
컴퓨터/IT
책소개
국가공인 리눅스마스터 1급 교재이다. 리눅스마스터 1급 1차, ...
가격비교

 



Part1. 리눅스 실무의 이해

Chapter 02. 리눅스 시스템의 이해

2.4 쉘

2.4.1 쉘의 이해

2.4.2 쉘 프로그래밍



방대한 책범위와 시험기간이 얼마 안남은 관계로 전략변경

- 빠른 시일내에 책 훑기

- 문제를 풀면서 내용 정리


- 업데이트 할 목록

-> 쉘,  쉘 환경 환경 변수 및 환경설정


- 업데이트:2015-08-28




- 쉘

- 컴퓨터는 0과 1만을 이해할 수 있다. 하지만, 사람이 컴퓨터가 이해할 수 있는 0과 1만을 사용하여 명령을 내리기는 쉽지 않은 일이다. 그래서 쉘이라는 것이 명령어를 입력받아 이것을 컴퓨터가 이해할 수 있는 0과 1로 된 명령으로 바꾸어, 이 명령을 처리하는 커널에 전달하는 것이다.

- 쉘의 역할

사용자(User) <-> Shell(쉘) <-> kernel(커널) <-> 하드웨어

사용자가 로그인 할 때 자동적으로 쉘이라는 프로그램이 실행된다.

쉘에는 여러 종류가 있으나, 큰 갈래로는 Bourne Shell 과 C shell이 있다. 나머지들은 이들로부터 파생된 것들이다.

이중 리눅스에서 기본적으로 사용하고 있는 쉘은 bash 쉘로 Bourne Again Shell이란 뜻이다. 이것 역시 Bourne Shell로부터 파생된 것이다. 사용자가 원한다면, 사용하고자 하는 쉘을 변경할 수도 있다.

쉘이 프롬프트에 사용하는 기호는 쉘마다 다른데, 기본적으로 본 쉘과 콘쉘은 "$"을, C쉘은 "%"을 사용한다.

/etc/shells 파일을 열어 보면 사용할 수 있는 쉘들의 경로가 설정되어 있다.

/etc/passwd 파일을 살펴보면, 다음과 같이 사용자가 등록되어 있다.

test1:x:502:502:Test User:/home/test1:/bin/bash

마지막 항목(/bin/bash)이 사용자가 사용하는 쉘이다. 명령어을 처리하는 쉘을 얻지 못하므로 어떤 명령도 수행할 수가 없다


- 사용자 쉘 바꾸기

$echo $SHELL

/bin/bash

잠시 바꾸고 싶을 때는 사용하려는 쉘을 프롬프트에서 실행 시킨다. 그 쉘을 빠져나겨려면, 'exit' 명령을 사용한다. 기본 쉘을 변경하고 싶을 때는 chsh 명령을 사용하거나, /etc/passwd 파일의 쉘 부분을 변경 한다.


- 쉘 환경 설정

- 설정 파일

리눅스에서는 여러 가지 환경 설정 파일을 제공한다. 이것은 리눅스의 사용자를 더욱 자유롭고 융통성 있게 만들어 준다. 이런 파일들은 보통 홈디렉토리 안에 위치하고 있으며, '.'으로 시작 하는 파일들이다. 'ls -a' 명령으로 파일의 존재를 확인할 수 있다. 파일의 이름은 "Resource Configuration"이라는 의미의 "rc"라는 스펠링으로 끝나는 경우가 많다.

이런 파일들은 새로운 사용자를 등록하면, "/etc/skel " 디렉토리에 기본 값으로 저장되어 있는 파일들을 홈디렉토리에 복사하여 생겨나는 것이다.

물론, 그 중에는 쉘 구동 환경을 설정하는 파일들도 있다.

- 환경 설정 파일 설명

.bashrc

쉘을 위한 쉘 스크립트로 스크립트로 서브 쉘, 즉 비로그인 쉘이 실행될 때 명령과 명령과 프로그램 구조로 구성할 구성할 수 있다 . 새로운 쉘이 실행될 실행될 때마다 때마다 실행

- .bash_profile

로그인 할 때 읽어 들이는 설정 파일 . 주요 설정 내용은 내용은 일반적으로 일반적으로 , 검색 경로 , 터미널 터미널 종류 , 환경변수등을 환경변수등을 설정하고 설정하고 , 그 외 로그인 로그인 시점에 실행 시키고 시키고 싶은 명령 , 시스템에 시스템에 대한 정보를 정보를 보여주는 보여주는 명령등을 명령등을 명령등을 수행

.bash_logout

로그인 쉘이 종료 되면서 되면서 읽어 들인다 .


- 환경 변수

- 환경 변수는 쉘 환경을 입맛에 맞게, 혹은 필요에 맞게 설정하는데 사용되는 값들을 가지고 있다. 물론, 이 변수값을 수정함으로써 사용자마다 원하는 환경을 설정할 수 있다.


- 주요 환경 변수들



- Bash의 쉘변수

(1) 쉘변수 

1) 개요: 말 그대로 특정한 쉘 즉 bash에서만 적용되는 변수를 말한다. 

2) 특징 

- 지정하는 방법은 '변수명=값' 형태로 지정하면 된다. 예) $ COLOR=red 

- 변수값을 출력할 때는 변수명 앞에 $을 붙여 echo명령을 사용하면 된다. 

예) $ echo $COLOR red

(2) 환경변수

- 모든 쉘에 영향을 미치는 변수라는 것을 제외하고는 쉘변수와 지정방법이나 특징이 유사하다.

(3) bash에서 쉘변수를 환경변수화시키기

- export명령을 사용하면 된다. 

(사용 예제) 

# mkdir $HOME/backup 

# ls -ld $HOME/backup 

drwxrwxr-x 2 kkn kkn 4096 8월 28 05:31 /home/kkn/backup 

# 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 : 현재작업디렉토리의 마지막 디렉토리만 보여준다. 

! : 현재 명령의 히스토리 넘버를 보여준다.


- 환경 변수 관련 명령

(1) set : shell변수를 표시하고 값을 지정할 수 있다. C-shell에서는 변수와 값 지정시에 필수적으로 사용해야 하지만, Bash에서는 변수와 값지정시에 꼭 set 명령을 지정하지 않아도 된다.

1) 사용법 

set [option] [argument] 

2) option 

-o : 현재 set옵션의 상태를 표시한다. 

3) 사용예 

- set => 옵션이나 인자가 주어지지 않으면 이미 지정된 shell변수와 함수이름,값이 표시된다.

- set -o => 현재 set옵션의 상태가 표시된다.

4) 응용예 

$ a=1 // bash에서는 set 명령없이 "변수=값" 형태로 지정 하면 된다. 확인은 인자없이 set 이라고 입력한다. 

$ echo $a 

=> 변수로 선언되었으므로 $a하면 1이라는 값이 출력된다. 

$ /bin/csh // 임시로 C-shell로 전환. 

=> C-shell로 전환하면 프롬프트로 바뀜을 알 수 있다. 

$ b=2 

b=2: Command not found. => bash에서 변수지정하는 것처럼 하면 오류가 나타남을 알 수 있다. 

$ set b=2 => C-shell 계열에서는 변수와 값지정시 set 명령을 사용해야 한다.

확인하려면 인자없이 set 이라고 입력한다. 

$ echo $b 2 => 변수로 선언되었으므로 $b하면 2라는 값이 출력된다


(2) env : 환경변수에 대한 정보를 보여준다. 

1) 환경변수란 : 로그인할 때나 새로운 쉘을 파생시킬 때 쉘의 환경을 정의하는 중요한 역할을 수행한다. env를 실행하면 환경 변수 설정값들을 확인할 수 있고 또한 각 환경변수를 나타낼 때 변수이름 앞에 $를 붙인다.

2) 사용예 

# env 

=> 현재 시스템의 환경변수를 보여준다. 

3) 환경변수의 설정 : 값을 지정한후 export해야 한다. 현재 리눅스의 bash에서는 export를 해도 반영된다.

예) PATH 변경하기 

$ echo $PATH 

/usr/local/bin:/bin:/usr/bin:/usr/X11R6/bin:/home/kkn/bin 

=> 현재 패스를 확인하면 홈디렉토리를 없다. 홈디렉토리를 추가해보자. 

$ PATH="$PATH:/home/kkn" 

$ export PATH $ echo $PATH     /usr/local/bin:/bin:/usr/bin:/usr/X11R6/bin:/home/kkn/bin:/home/kkn 


(3) export : 쉘변수를 환경변수로 만들어주는 명령이다. 현재 리눅스 bash에서 일시적인 반영시에는 생략해서 사용할 수 있다.

1) 사용법 

export 환경변수=변수값 

2) 사용예 

- # export PATH="$PATH:/usr/local/apache/bin" 

=> 현재 설정된 패스값에 /usr/local/apache/bin이라는 경로를 추가한다. 

- $ PATH="$PATH:/home/kkn" 

=> 현재 설정된 패스값에 "/home/kkn"이라는 경로를 추가한다.

    export명령을 생략해서 사용해도 된다.


(4) unset : 선언된 변수를 제거하는 데 사용한다. 

1) 사용법

unset 변수이름 

2) 사용예 

# TEL=042 

# echo $TEL 

042 

# unset TEL 

# echo $TEL     // 변수가 제거되었으므로 아무값도 출력되지 않는다. 

(참고) bash에서는 환경변수를 만들 때 변수 값을 설정한 후, 환경에 변수를 익스포트(export)하는 두 단계를 거친다.


- C쉘

버클리 대학에서 대학에서 만든 쉘이다 . Bourne Shell보다 기능적인 면에서 진보된 쉘이다. 

초기화 파일은 파일은 $HOME/.cshrc .login .logout 세개의 파일이 파일이 있다 . 

사용자가 로그인을 하게되면 먼저 .login 파일을 읽고 환경변수를 셋팅한다 . 그리고 나서 .cshrc 파일을 읽음으로서 각 프로세스의 쉘 변수를 변수를 설정한다. .logout 파일은 로그아웃할때 읽게된다. 

C쉘은 BourneBourne쉘 계열과 달리 "="기호를 사용하지 않는다.

- 현재 쉘에 적용 방법

# source .cshrc

- C쉘 환경파일 적용 순서

/etc/.login => ~/.cshrc => ~/.login





--환경설정??? 책보고 확인 필요

-- 쉘프로그래밍 추가 해야함

+ Recent posts