티스토리 뷰
[Shell Script] 리눅스 쉘 파헤치기 -1. 쉘 소개
1. 리눅스 쉘
GNU 배시쉘은 리눅스의 기본 쉘로, 본 쉘에서 기능이 강화되어, 프로그래밍뿐만 아니라 대화형으로 사용될 때도, 사용자가 효율성 향상을 위해 자신의 작업환경 구성과 단축키 생성이 가능하다.
배시 쉘은 오늘날 유닉스와 리눅스에서 사용되는 가장 인기 있는 쉘 중의 하나이며, 배시(Bash) 프롬프트의 기본 프롬프트는 달러 표시($)이다.
사용하는 리눅스 운영체제에서 어떤 쉘을 사용할 수 있는지 알고 싶다면 다음과 같이 /etc/shells 파일을 살펴보면 된다.
[root@gukii ~]# cat /etc/shells
/bin/sh
/bin/bash
/sbin/nologin
/bin/dash
2. POSIX 가 뭐지?
상이한 운영체제와 해당 프로그램의 소프트웨어 표준을 제공하기 위해서는, IEEE와 ISO 조직의 참여로 이루어진 POSIX 표준(개방형 시스템 표준)으로 이끌어내야 한다. POSIX의 목표는 서로 다른 플랫폼에서 응용 프로그램의 이식성을 증진시키는 표준에 충족되는 유닉스 계열의 컴퓨팅 환경을 제공하는 것이다.
3. 쉘의 역할
프롬프트에서 들어오는 모든 명령이 적절히 실행되도록 하는 것이 쉘의 궁극적인 역할이다. 쉘의 역할과 책임을 정리해보면 다음과 같다.
1. 입력된 내용을 읽어서 해당 명령줄을 분석한다.
2. 와일드카드와 히스토리 문자와 같은 특수 문자들을 분석한다.
3. 파이프, 리다이렉션, 백그라운드 프로세스를 설정한다.
4. 시그널을 처리한다.
5. 프로그램을 올바르게 실행시킨다.
4. 변수
쉘은 두가지 타입(지역과 환경)의 변수를 정의한다.
지역변수는 자신이 생성한 쉘에서만 개별적으로 제공되고 이 쉘에서 파생된 다른 프로세스에게는 전달되지 않는다. 반면 환경변수는 부모 프로세스에서 자식 프로세스로 전달되고, 자식에서 또 그 후손으로 전달된다.
내장된 set 명령은 지역변수와 환경변수 모두를 보여준다.
[root@gukii ~]# set
BASH=/bin/bash
BASHOPTS=checkwinsize:cmdhist:expand_aliases:extquote:force_fignore:hostcomplete:interactive_comments:login_shell:progcomp:promptvars:sourcepath
BASH_ALIASES=()
BASH_ARGC=()
BASH_ARGV=()
BASH_CMDS=()
BASH_LINENO=()
BASH_SOURCE=()
BASH_VERSINFO=([0]="4" [1]="1" [2]="2" [3]="2" [4]="release" [5]="x86_64-redhat-linux-gnu")
BASH_VERSION='4.1.2(2)-release'
COLORS=/etc/DIR_COLORS.256color
COLUMNS=147
CVS_RSH=ssh
DIRSTACK=()
EUID=0
GROUPS=()
G_BROKEN_FILENAMES=1
HISTCONTROL=ignoredups
HISTFILE=/root/.bash_history
HISTFILESIZE=100
HISTSIZE=100
HISTTIMEFORMAT='%Y-%m-%d_%H:%M:%S '
HOME=/root
HOSTNAME=gukii.ga
HOSTTYPE=x86_64
IFS=$' \t\n'
LANG=en_US.UTF-8
LC_ALL=en_US.UTF-8
LESSOPEN='||/usr/bin/lesspipe.sh %s'
LINES=116
LOGNAME=root
LS_COLORS='rs=0:di=38;5;27:ln=38;5;51:mh=44;38;5;15:pi=40;38;5;11:so=38;5;13:do=38;5;5:bd=48;5;232;38;5;11:cd=48;5;232;38;5;3:or=48;5;232;38;5;9:mi=05;48;5;232;38;5;15:su=48;5;196;38;5;15:sg=48;5;11;38;5;16:ca=48;5;196;38;5;226:tw=48;5;10;38;5;16:ow=48;5;10;38;5;21:st=48;5;21;38;5;15:ex=38;5;34:*.tar=38;5;9:*.tgz=38;5;9:*.arj=38;5;9:*.taz=38;5;9:*.lzh=38;5;9:*.lzma=38;5;9:*.tlz=38;5;9:*.txz=38;5;9:*.zip=38;5;9:*.z=38;5;9:*.Z=38;5;9:*.dz=38;5;9:*.gz=38;5;9:*.lz=38;5;9:*.xz=38;5;9:*.bz2=38;5;9:*.tbz=38;5;9:*.tbz2=38;5;9:*.bz=38;5;9:*.tz=38;5;9:*.deb=38;5;9:*.rpm=38;5;9:*.jar=38;5;9:*.rar=38;5;9:*.ace=38;5;9:*.zoo=38;5;9:*.cpio=38;5;9:*.7z=38;5;9:*.rz=38;5;9:*.jpg=38;5;13:*.jpeg=38;5;13:*.gif=38;5;13:*.bmp=38;5;13:*.pbm=38;5;13:*.pgm=38;5;13:*.ppm=38;5;13:*.tga=38;5;13:*.xbm=38;5;13:*.xpm=38;5;13:*.tif=38;5;13:*.tiff=38;5;13:*.png=38;5;13:*.svg=38;5;13:*.svgz=38;5;13:*.mng=38;5;13:*.pcx=38;5;13:*.mov=38;5;13:*.mpg=38;5;13:*.mpeg=38;5;13:*.m2v=38;5;13:*.mkv=38;5;13:*.ogm=38;5;13:*.mp4=38;5;13:*.m4v=38;5;13:*.mp4v=38;5;13:*.vob=38;5;13:*.qt=38;5;13:*.nuv=38;5;13:*.wmv=38;5;13:*.asf=38;5;13:*.rm=38;5;13:*.rmvb=38;5;13:*.flc=38;5;13:*.avi=38;5;13:*.fli=38;5;13:*.flv=38;5;13:*.gl=38;5;13:*.dl=38;5;13:*.xcf=38;5;13:*.xwd=38;5;13:*.yuv=38;5;13:*.cgm=38;5;13:*.emf=38;5;13:*.axv=38;5;13:*.anx=38;5;13:*.ogv=38;5;13:*.ogx=38;5;13:*.aac=38;5;45:*.au=38;5;45:*.flac=38;5;45:*.mid=38;5;45:*.midi=38;5;45:*.mka=38;5;45:*.mp3=38;5;45:*.mpc=38;5;45:*.ogg=38;5;45:*.ra=38;5;45:*.wav=38;5;45:*.axa=38;5;45:*.oga=38;5;45:*.spx=38;5;45:*.xspf=38;5;45:'
MACHTYPE=x86_64-redhat-linux-gnu
MAIL=/var/spool/mail/root
MAILCHECK=60
OPTERR=1
OPTIND=1
OSTYPE=linux-gnu
PATH=/usr/local/bin:/usr/lib64/qt-3.3/bin:/usr/local/sbin:/usr/local/bin:/sbin:/bin:/usr/sbin:/usr/bin:/root/bin
PIPESTATUS=([0]="130")
PPID=24018
PROMPT_COMMAND='printf "\033]0;%s@%s:%s\007" "${USER}" "${HOSTNAME%%.*}" "${PWD/#$HOME/~}"'
PS1='[\u@\h \W]\$ '
PS2='> '
PS4='+ '
PWD=/root
QTDIR=/usr/lib64/qt-3.3
QTINC=/usr/lib64/qt-3.3/include
QTLIB=/usr/lib64/qt-3.3/lib
SHELL=/bin/bash
SHELLOPTS=braceexpand:emacs:hashall:histexpand:history:interactive-comments:monitor
SHLVL=1
TERM=xterm-256color
UID=0
USER=root
_=tail
colors=/root/.dircolors
다음 장에서는 배시(bash) 쉘 구조에 대해서...
'Programming > Shell Script' 카테고리의 다른 글
[Shell Script] 리눅스 쉘 파헤치기 -2. 배시(bash) 쉘 구조 (0) | 2018.08.16 |
---|---|
[Shell Script] Backup Shell Script (0) | 2018.08.14 |
[Shell Script] 로그 포맷 생성 (0) | 2018.07.27 |
[Shell Script] 리눅스 명령어 실행 결과를 배열에 담기 (0) | 2018.07.27 |
[Shell Script] 리눅스 명령어 실행결과를 변수에 담기 (0) | 2018.07.27 |
- Total
- Today
- Yesterday
- 매치스패션 할인
- 리눅스 모니터링
- 나이키 코르테즈
- 웹쉘 해결
- 나이키 켄드릭라마
- 배트멍 할인
- 웹쉘 탐지
- selinux 정책설정
- 파워쉘 문자열
- 리눅스 hostname 변경
- CloudStack
- 이지 350 지브라
- 이지 부스트 700
- 파워쉘 문자열 포함
- 리니지m 격수 팁
- 조던1 사틴
- 웹쉘 예방
- 케니4
- troijan
- end 응모
- 파워쉘 문자열 포함 조건
- 조던1 사틴 블랙토
- Java
- 이지 부스트 700 모브
- selinux 사용법
- selinux 설명
- 이지 700 모브
- 조던1 사틴 블랙토 개봉기
- 피파온라인4
- linux bridge 설정
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |