일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 | 31 |
- 동아리
- 멤버십
- Friendship
- Bidirectional Associative Memory
- 파이썬
- 신경회로망
- 갤럭시탭S8울트라
- Python
- Neural Network
- 삼성
- 물걸레자동세척로봇청소기
- 빅데이터
- NarwalFreo
- 삼성전자 소프트웨어멤버십 SSM
- 구글 앱 엔진
- 패턴 인식
- 증강현실
- SSM
- 신경망
- 고려대학교
- 인공지능
- 패턴인식
- hopfield network
- 가상화
- 나르왈프레오
- 물걸레로봇청소기추천
- BAM
- 삼성소프트웨어멤버십
- 하이퍼바이저
- Google App Engine
- Today
- Total
정보공간_1
[6기 강북 윤덕진] 리눅스 쉘 스크립트 프로그래밍 #4 본문
안녕하십니까? 강북 멤버십 23-1기 윤덕진입니다.
앞부분에서 본 쉘의 문법과 구조를 알아봤다면 오늘은 배시 쉘 문법과 구조에 대해서 포스팅하도록 하겠습니다.
1. 배시 쉘의 시작
배시 쉘을 로그인 쉘로 사용한다면 쉘 프롬프트가 화면에 보여지기 전에 다음과 같은 프로세스를 진행한다.
init
.
.
getty ----->login->password--->bash
리눅스가 부팅되면 init이라는 첫 번째 프로세스가 생성됩니다. 이 때 이 프로세스의 프로세스 ID는 1번이 됩니다. 그리고 자식 프로세스로 getty 프로세스를 실행하는데, 이 프로세스를 사용하여 터미널 포트를 오픈하고 모니터에 로그인 프롬프트를 보여줍니다. password 까지 입력이 끝나면 bash 프로세스는 /etc/profile 시스템 파일을 찾아서 명령라인에서 실행하게 됩니다.
2. 배시 쉘 환경
2.1 배시 쉘 초기화 파일들
(1) /etc/profile
/etc/profile 파일은 유저가 로그인했을 때 가장 먼저 읽어들이는 시스템 초기화 파일입니다.
USER 변수는 유저명으로 할당됩니다.
LOGNAME 변수는 앞서 설정한 USER 변수로 할당됩니다.
MAIL 변수는 USER의 메일이 저장된 메일 스풀러 경로가 할당됩니다.
HOSTNAME 변수는 유저의 호스트 머신 이름이 할당됩니다.
HISTSIZE 변수는 1000으로 설정되는데, 이 변수는 쉘 메모리에 저장되는 명령 히스토리 목록수를 말하며 쉘이 종료되면 히스토리 파일에 저장됩니다.
(2) .bash_profile
유저의 홈디렉터리를 보면 디폴트로 .bash_profile 파일을 가지고 있습니다. 이 파일은 /etc/profle 파일을 실행한 다음 실행하게 되어 있습니다. 순서는 .bash_profile, .bash_login, .profile 순입니다. 만약 .bashrc도 존재한다면 같이 실행하게 됩니다.
(3) .bashrc
앨리아스 설정과 /etc/bashrc 파일이 존재하면 같이 실행하도록 구성되어 있습니다. 앨리아스란, 긴 명령을 짧은 명령으로 대체하여 보다 간결하게 명령을 수행하기 위한 것입니다. 내용 중에서 alias rm='rm -i' 라고 적혀 있는데, 이것의 의미는 rm 명령을 실행할 때 항상 -i 옵션을 수행하도록 하는 것입니다.
(4) /etc/bashrc
시스템 전역 함수들과 앨리아스들을 설정하고 있습니다.
3. 배시 쉘 옵션 설정을 위한 set, shopt 명령
(1) set
set 명령어는 특수한 빌트인 내장 옵션들을 켜고 끄는 역할을 합니다.
아래 표는 set 옵션 중 몇가지를 정리해보았습니다.
set 명령 옵션 |
짧은 옵션 |
의미 |
allexport |
-a |
설정을 해제할 때까지 뒤이어서 나올 명령의 환경으로 export 하기 위해 수정 또는 생성할 변수를 자동으로 표기합니다. |
braceexpand |
-B |
브레이스 확장이 가능하며 기본값으로 설정되어 있습니다. |
emacs |
|
이맥스 스타일의 명령행 편집 인터페이스를 사용하며, 기본값으로 설정되어 있습니다. |
errexit |
-e |
명령이 0 아닌 상태값을 갖고 종료하면 즉시 종료합니다. 만약 실패한 명령이 util 또는 while 루프의 일부, if 문의 일부, &&의 일부, || 목록의 일부이거나 또는 명령의 반환값이 !로 반전되면 종료하지 않습니다. |
histexpand |
-H |
! 스타일의 히스토리 치환을 사용합니다. 쉘이 대화형 모드이면 기본으로 켜지는 플래그 입니다. |
history |
|
명령 라인 히스토리를 가능하게 설정하며, 기본값으로 설정되어 있습니다. |
ignoreeof |
|
쉘을 빠져나오기 위해 Ctrl-d 를 눌러 EOF하지 못하도록 합니다. 이때에는 exit 명령을 사용해야 한다. 쉘 명령 IGNOREEOF=10 을 실행한 것과 같은 효과를 발휘합니다. |
keyword |
-k |
명령을 위한 환경에서 키워드 아큐먼트를 배치합니다. |
interactive-comments |
|
인터렉티브 쉘에서 이 옵션을 사용하지 않으면 # 주석을 사용할 수 없습니다. 기본값으로 설정되어 있습니다. |
(2) shopt
shopt 명령은 배시 쉘에서 사용되는 set 명령으로서 새로운 버전의 쉘 옵션 내장명령어입니다. shopt 명령은 -p 옵션을 사용하여 모든 옵션들을 출력해 볼 수 있으며, -u 옵션을 사용하여 옵션 설정을 off할 수 있고, -s 옵션을 사용하여 on 할 수 있다.
shopt 옵션 |
의미 |
cdable_vars |
이 변수를 설정하면 cd 내장명령의 인수로 디렉터리가 아닐 때 이동하고자 하는 디렉터리를 값으로 갖고 있는 변수 이름으로 간주합니다. |
cdspell |
cd 명령에서 디렉터리명 스펠리의 작은 에러를 교정합니다. 교환문자, 빠진문자 그리고 너무 많은 문자를 체크하는데, 교정이 되면 교정된 경로가 프린트되고 명령을 처리합니다. 단, 인터렉티브 쉘에서만 사용됩니다. |
checkhash |
배시는 명령을 실행하기 전에 존재하는 해시 테이블에 명령이 있는지 체크합니다. 만약 명령이 존재하지 않으면 일반 경로 검색을 수행합니다. |
checkwinsize |
배시는 각 명령 다음에 윈도우 사이즈를 체크하고 필요하다면 LINES와 COLUMNS 변수의 값을 업데이트 합니다. |
cmdhist |
배시는 동일한 히스토리 엔트리에서 다중라인 명령의 모든 라인을 저장하려고 합니다. 이 옵션을 사용하여 다중 라인 명령을 쉽게 재편집할 수 있습니다. |
dotglob |
배시는 파일명 확장 결과에서 dot(.)으로 시작하는 파일명을 포함합니다. |
execfail |
비대형화 쉘은 exec 명령을 위한 아규먼트로 지정한 파일을 실행할 수 없으면 종료하지 못할 것이다. 대화형 쉘은 exec 명령이 실패하면 종료하지 않습니다. |
expand_aliases |
앨리아스가 확장됩니다. |
extglob |
확장된 패터 매칭 특징이 가능합니다. |
이상으로 배시 쉘 문법과 구조에 대한 포스팅을 마치도록 하겠습니다.
감사합니다.
위 내용은 김태용의 리눅스 쉘 스크립트 프로그래밍 입문 에서 발췌하였습니다.
'IT 놀이터 > Elite Member Tech & Talk' 카테고리의 다른 글
[6기 강북 전영진] 리눅스 커널 심층 분석 #5 (0) | 2014.12.08 |
---|---|
[6기 강남 김현호] 대학생의 시점에서 바라본 데이터 마이닝 (0) | 2014.12.04 |
[6기 강북 전영진] 리눅스 커널 심층 분석 #4 (0) | 2014.11.28 |
[6기 부산 박천경] 신경회로망 오류역전파 (Backpropagation) (0) | 2014.11.28 |
[6기 수원 최웅엽] WebGL 애니메이션과 셰이더 (0) | 2014.11.26 |