
1. shell
- Linux Kernel과 사용자의 상호 작용을 위한 인터페이스 역할 수행 application
기능
- 명령 해석 및 실행 기능
- 사용자와 Linux Kernel 사이에서 명령을 해석하고 전달하는 해석기( interpreter )와 번역기( translator ) 기능
- Linux booting후 기본 사용 shell -> login shell
- login shell 지정 -> /etc/passwd 파일에 저장
- /etc/passwd -> 현재 Linux에 등록된 사용자 정보 저장파일, 실제 password는 저장하고 있지 않는다.
ex) 사용자이름:x:UID:GID:사용자 설명:홈디렉토리:login shell
- /etc/shadow -> password 저장 파일. passwd 명령
- /etc/group -> group 정보 저장 파일, chgrp 명령, groupadd 명령
- /etc/gshadow -> group password 저장 파일
- 프롬프트( prompt ) - 사용자로 부터 명령 입력을 기다릴 때 표시 되는 내용
- 프로그래밍 기능 - 자동화( 반복적인 동작 자동 수행 )
- 반복적으로 수행하는 작업을 프로그램 형태로 작성해서 일괄 실행 하는 기능 - 반복 동작 자동화
- shell 프로그램 -> shell script
- shell에서 사용하는 명령을 모아 놓은 파일
- shell script를 실행함으로써 명령들을 자동 실행
- 사용자 환경 설정 기능
- 사용자 환경을 설정할 수 있는 환경 설정 파일( 초기화 파일 )
- 환경 설정 파일( 초기화 파일 )
명령 검색 경로
파일 생성시 기본 권한
환경 변수 설정
2. shell 종류
2.1. 본 쉘( Bourne shell )
- UNIX V7에 처음 적용
- 표준 shell 이라고도 한다.
- 본 쉘 이름 - sh
- 단순하고 처리 속도가 빠른 장점, 시스템 관리 작업 수행시 현재도 많이 사용하는 shell
- history, alias, 작업 제어등의 편의 기능이 미약
2.2. C shell
- BSD UNIX에 처음 적용
- C shell 이름 - csh
- Bourne shell에 없던 history, alias와 같은 편의 기능 추가
- shell script 형식이 C 언어와 같기 때문에 C shell 이라 한다.
2.3. 콘 쉘( Korn shell )
- AT&T에서 개발
- UNIX SVR 4에 처음 적용
- 콘 쉘 이름 -> ksh
- 본 쉘과의 호환성을 유지하면서 사용자 편의 기능과 C shell의 특징을 모두 제공하며 속도가 빠름
2.4. 배시 쉘( bash shell, bourne again shell )
- 본 쉘 기반으로 개발
- 본 쉘과 호환성 유지하면서 csh, ksh 기능 포함
- 본 쉘 이름 -> bash
- GPL license 기반 open source
- Linux 기본 쉘로 제공
2.5. 대시 쉘( dash shell )
- 본 쉘 기반으로 개발
- POSIX 표준 준수 및 크기가 작게 개발
- 대시 쉘 이름 -> dash
- Ubuntu에서는 bash대신 dash 사용
2.6. chsh 명령 - 로그인 쉘 변경 명령
chsh [ 옵션 ][ 사용자명 ]
- -s shell - 지정한 쉘( 쉘의 절대 경로 )로 login shell 변경
- -l - 지정 가능한 shell 출력, /etc/shells 파일 저장 내용, ubnutu 2004 에서는 지원하지 않는 옵션
2.7. 로그인 쉘과 서브 쉘
- 현재 프롬프트 상에서 다른 쉘을 실행하면 해당 쉘은 서브 쉘 이라 한다.
- 서브 쉘은 현재 쉘과 별개의 다른 쉘을 실행
- 서브 쉘 종료 방법은 exit 명령, ctrl + d 입력
- 서브 쉘이 종료 되면 이전 쉘 환경으로 복귀
- 로그인 쉘을 종료 하면 logout 상태가 된다.
- logout - 현재 사용자 사용 종료, Linux booting후 login 화면으로 전환
- Linux 종료 - 일명 shutdown이라고 하면 Linux를 완전히 종료한다는 의미
3. shell 명령
- shell 내장 명령
- shell에 내장된 명령으로 별도의 실행 파일이 존재 하지 않는 명령
- type 명령 - 명령 종류 확인 -> type <명령>
- 일반 명령
- 별도의 실행파일로 존재 하면 실행시 메모리에 로드한 후 실행 되는 과정을 거치는 명령
- 사용자 작성 프로그램 또한 shell 일반 명령으로 볼 수 있다.
- echo 명령
- 문자열 또는 변수 내용 출력( 표준 출력 장치 )
- echo 명령은 자동 줄바꿈 기능을 갖고 있다.
- echo [ 옵션 ] <출력할 문자열 또는 $변수명>
- -n - 줄 바꿈 하지 않는다.
- 문자열은 ‘( 따옴표 ), “( 이중 따옴표 )로 묶거나 직접 문자열만 표기할 수 있다.
- 변수( variable ) - 메모리 공간에 부여한 이름, 메모리 공간에 값을 저장할 때 사용
- 변수명만 표기하면 변수 내용이 아니고 변수명을 문자열로 인식
- 변수 내용 - $변수명 형식 사용
- shell 환경에서 사용하는 문자열 표현 특수 문자
- ‘( 따옴표 ) - 문자열을 감싸서 표현, 문자열 안의 특수 문자 기능은 모두 해제
- “( 이중 따옴표 ) - 문자열을 감싸서 표현, 문자열 안의 특수 문자 중 $, `( 백틱 ), /를 제외한 특수 문자 기능은 모두 해제
- `( 백틱 ) - 표현식 또는 명령에 대한 기능 수행 결과
- \( 백슬레시 ) - 제어문자 효과를 없애고자 할 때 사용
- 제어문자 - 특정 문자에 기능을 적용한 문자
- \n - 줄바꿈
- \t - tab 문자
- \b - backspace
4. 변수( variable )
- 값을 저장하는 메모리 공간 - 변수
- 변수명은 변수에 대한 이름
- 변수 생성 방법
변수명=값( 문자열 )
변수명은 항상 대문자 사용
= 기호 앞/뒤로 공백이 있으면 안된다.
4.1. 변수 종류
shell 변수 - 현재 사용중인 shell에서만 사용 가능한 변수( 지역 변수 )
생성 - 변수명=값
환경 변수 - 현재 사용중인 shell과 자식( 서브 ) shell에 모두 적용되는 변수( 전역 변수 )
생성 - export 변수명=값
shell 변수를 환경 변수로 변경 - export <shell변수>
unset 명령 - 변수 해제
unset 변수명
4.2. 변수 목록 출력
set 명령 - 전체 변수 출력, shell 변수/환경 변수 모두 출력
env 명령, printenv 명령 - 환경 변수 전체 출력
4.3. 주요 환경 변수
HISTSIZE - 명령 history 저장 크기
HOME - 사용자 홈 디렉토리 절대 경로
LANG - 사용 언어
LOGNAME - 사용자 계정 이름
PATH - 명령 탐색 경로
Linux에서는 명령 검색을 PATH 변수 내용의 경로에서 검색한다.
PWD - 현재 디렉토리 경로
SHELL - login shell
4.4. alias
별명을 의미하며 원하는 기능을 수행하는 명령( 들 )을 별도의 alias를 통해 지정
alias - 현재 설정된 alias 목록
alias <이름>=’명령;명령;...’ - alias 설정
unalias <alias 이름> - alias 해제
4.5. 환경 설정
- Linux booting시 또는 사용자 로그인 할 때 마다 자동으로 shell 환경 설정 - 처음 한 번 적용
- 환경 설정 파일 - 환경 설정 내용을 담고 있는 text 파일
- 환경 설정 파일에 #은 해당 line은 주석( comment ) 의미하고 실제 환경 설정 적용에 사용하지 않는다.
- 시스템 환경 설정 파일
- Linux 시스템을 사용하는 모든 사용자에게 공통으로 적용되는 환경 정보를 담고 있는 파일
- 관리자 권한으로 수정 가능
- /etc/profile
- 시스템 공통으로 적용되는 환경 변수 설정
- PATH, USER, HOSTNAME, HISTSIZE
- 기본 접근 권한 설정
- /etc/profile.d/*.sh 실행
- /etc/bashrc -> 없는 경우도 있음
- 시스템 공통으로 적용되는 함수와 alias 설정
- 기본 프롬프트 설정
- 서브 shell을 위한 명령 경로( path ) 설정
- 서브 shell을 위한 기본 접근 권한 설정
- /etc/profile.d/*.sh
- 언어나 명령별 각각 필요 환경 설정
- 필요시 설정 파일 추가
- 사용자 환경 설정 파일
- 개별 사용자 마다 원하는 환경 설정에 대하여 환경 설정 정보를 담고 있는 파일
- 사용자가 로그인 하면 먼저 시스템 환경 설정 파일 내용을 적용하고 이 후 사용자 환경 설정 파일 적용 순으로 환경 설정이 이루어진다.
- 사용자 환경 설정 파일은 사용자 홈 디렉토리에 hidden 파일로 저장
- ~/.bash_profile
.bashrc 파일이 있으면 실행
경로 추가등 사용자 정의 환경 설정
- ~/.profile -> 사용자가 필요한 환경 설정 내용 추가
경로 추가등 사용자가 정의하는 환경 설정
~/.bashrc 파일이 있으면 실행
- ~/.bashrc -> 사용자가 필요한 환경 설정 내용 추가
일반적인 사용자 환경 설정
사용자 정의 함수나 alias등 설정
- ~/.bash_logout
logout 시 실행할 함수 등 설정
- ~/.bash_history
명령 history 저장 파일
history 명령이 참조하는 파일
5. shell script
-
shell 명령 기반으로 자동화를 수행하는 파일
-
단순히 shell 명령만 사용하는 것이 아니라 선택/반복과 같은 실행 흐름 제어 기능을 적용하여 프로그램 성격을 갖도록 작성한 파일
-
shell script 파일 첫 줄에 #!/bin/sh 또는 #!/bin/bash( shebang, 셔뱅 )을 추가하여 실행할 shell을 명시 해주는것이 일반적인 형식
-
shell script 파일은 .sh 확장자 부여
-
shell script 파일은 text 파일
-
shell script 실행
5.1. shell script 구성 요소