Certification/리눅스마스터

리눅스 기초 - Shell (셸)

2mukee 2020. 12. 15. 16:51
320x100
320x100

 

셸 (Shell)

- 리눅스와 사용자 사이의 인터페이스 역할을 수행하는 명령어 해석기 (Command Interpreter)

- 유저 ↔ 셸 ↔ OS ↔ 하드웨어

- 기본 셸 (로그인 셸) : 사용자가 로그인하면서 자동으로 실행되는 셸

- 셸의 저장 파일

: /etc/passwd

ㆍ계정 정보의 저장장소

ㆍ일반 사용자도 접근가능

: /etc/shadow

ㆍ계정의 비밀번호 저장 디렉터리

ㆍroot 사용자만 접근 가능

 

 

본 셸(Bouren Shell)

- 가장 오래된 셸이며 유닉스 시스템의 표준 구성요소

- sh 명령어를 통해 전환 가능 (기본 프롬프트 기호 = $)

- 환경설정 파일 : .profile

- alias와 작업 제어 등의 편의 기능이 부족함

※ 파일이름앞에 . 이 붙으면 hidden file로 간주

 

 

C 셸 (C Shell)

- 본 셸을 확장한 셸 (버클리 계열 셸)

- 구문의 형식이 C언어와 유사

- csh 명령어를 통해 전환 가능 (기본 프롬프트 기호 = %)

- 환경설정 파일 : .cshrc

- 크기가 커지고 처리속도가 느리나 본 셸 다음으로 가장 많이 사용된 셸

 

 

콘 셸 (Korn Shell)

- 본 셸과 C 셸의 장점을 조합하여 인터페이스가 우수하고 본 셸과의 호환성이 유지됨

- 사용자 편의를 위한 기능 제공과 빠른 속도

- ksh 명령어를 통해 전환 가능 (기본 프롬프트 기호 = $)

- 환경설정 파일 : .kshrc

- 우분투에서는 추가 설치 필요

 

 

배시 셸 (Bash Shell)

- FSF에서 무료로 공개되어 있는 셸로, 우분투 및 최근 리눅스의 기본 셸(로그인 셸)

- 본 셸과의 호환성 + C 셸 & 콘 셸의 편의성

- bash 명령어를 통해 전환 가능 (기본 프롬프트 기호 = $)

- 환경설정 파일 : .bashrc

 

 

셸의 전환

- 일시적인 전환

: 로그아웃전까지만 유효한 전환 (/etc/passwd 수정되지 않음)

: 이전 셸로 복귀 = exit

- 기본 셸 변경

: 로그인 셸을 다른 셸로 변경하는 것 (/etc/passwd 수정됨)

: 일반 사용자의 경우 자신의 기본 셸 변경 가능 (관리자 계정은 모든 사용자의 셸 변경 가능)

: usermod 명령어나 /etc/passwd 파일 수정을 통해 변경

: /etc/shells에 지정된 셸로만 변경 가능

: chsh 옵션 변경할셸 사용자

ㆍ자신의 기본 셸 변경

ㆍchsh -s /bin/bash comeve = comeve 계정의 로그인 셸을 bash 셸로 변경

 

 

셸 변수와 환경 변수

- 시스템의 환경을 설정하기 위해 셸에서 사용되는 변수

- 명령어의 path, 프롬프트의 모양 등 설정

- 셸 변수 : 현재 사용중인 셸에서만 유효한 변수

- 환경 변수 : 현재 사용중인 셸과 서브 셸까지 유효한 변수

- set : 모든 셸 변수와 환경 변수의 이름과 값을 출력

- env : 모든 환경 변수의 이름과 값을 출력

- echo : 지정한 셸 변수나 환경 변수의 값을 출력 (변수 앞에 $ 기호 사용)

: $HOME (사용자 홈 디렉터리의 절대 경로 출력)

: $PATH (현재 셸에 지정되어 있는 경로 출력)

: $SHELL (현재 사용중인 셸 출력)

: $LOGNAME (현재 로그인한 사용자의 계정 출력)

: $HISTSIZE (히스토리의 크기 출력)

 

 

변수 관리

- 셸 변수 생성 : 변수명=값

- 환경 변수 생성 : export [옵션] 변수명=값

: -n = 환경변수를 셸 변수로 전환

- 변수의 전환

: 셸 변수 → 환경 변수 : export 변수명

: 환경 변수 → 셸 변수 : export -n 변수명

- 변수 삭제

: unset 변수명

 

 

프롬프트의 구조와 설정

- 프롬프트의 기본구조

: 로그인한 사용자와 서버의 이름, 현재 위치한 디렉터리 등의 정보 포함

- deragon@comeve:/etc/X11$

: 현재 로그인한 계정 @ 서버이름 : 현재 위치한 디렉터리 (프롬프트 기호$)

- 이스케이프 문자를 이용한 프롬프트 변경

: .bashrc 파일의 PS1 환경변수의 내용 수정 (.bashrc 파일이 안보일시 ls -al)

: \u@\h:\w\$

ㆍ\사용자계정 @\호스트이름 : \현재 디렉터리의 절대경로 \ 프롬프트 기호

: \h = 호스트의 이름

: \u = 사용자 계정 이름

: \e = 색상 등 효과 지정

: \w = 현재 위치한 디렉터리를 절대 경로 형식으로 표시

: \W = 마지막 디렉터리 이름만 표시

: \[프롬프트 내에 출력하지 않는 문자열]

=> ex:) PS1 = '[\u@\W\t] \$'

- 프롬프트에 색상 지정

: '\[\e [글자색:효과m\]] 이스케이프문자'

ex:) PS1='\[\e[37;01m\]\u@\[\e[32;01m\]\h:\[\e[32;01m\]\w\[\e[37;00m\]\$'

=> 연속사용시 이스케이프\[\e[색:효과m\]]

 

 

명령어 기억 (history)

- history 옵션 : -c = 히스토리 내용제거

- $HISTSIZE : 시스템에 최대로 유지될 수 있는 명령어의 수

- !! : 바로 직전에 수행했던 명령어 다시 수행 (화살표 상하키)

- !번호 : 지정된 히스토리 명령어 번호에 해당하는 명령어 다시 수행

- !문자열 : 지정된 문자열을 포함하는 명령어 중 마지막에 수행된 명령어를 다시 수행

- 로그인 이후 수행된 명령어들은 메모리에 유지되다 로그아웃때 .bash_history 파일에 저장됨

- history 삭제 : history -c

: -c 옵션으로 삭제한다고 해도 로그아웃을 할때 .bash_history 파일에 저장됨

 

 

명령어에 별명짓기 (alias)

- 긴 명령어를 짧게 표현 가능

- 명령어와 옵션을 하나의 단어로 사용

- 여러개의 명령어를 하나의 단어로 사용

- 기존 셸 명령어를 별명으로 사용할 수 있음

- alias 별명='명령 [옵션] [:명령]'

: ex) alias mypwd='cd;pwd'

- 별명삭제 : unalias 별명

- 환경설정 파일을 이용한 alias 설정

: 시스템 환경설정 파일 (시스템을 사용하는 모든 사용자에게 적용되는 파일)

(/etc/profile과 /etc/bash.bashrc)

: 사용자 환경설정 파일 (사용자 계정마다 적용되는 파일)

(.profile, .bashrc, .hash_history, .bash_logout)

(시스템 환경설정 적용 후 사용자 환경설정 적용)

 

300x250
728x90