728x90
반응형
쉘이란
- 사용자와 커널 사이의 중간 역할
- 명령을 해석하고 실행 결과를 알려주는 역할
- 사용자의 명령 입력 편의를 위한 환경 설정
쉘의 기능
명령어 해석기 기능
- 사용자와 커널 사이에서 명령을 해석하여 전달
- 사용자가 로그인하면 셸이 자동으로 실행되어 사용자가 명령을 입력하기를 기다림 → 로그인 셸
- 프롬프트: 셸이 사용자의 명령을 기다리고 있음을 나타내는 표시
프로그래밍 기능
- 셸은 자체 내에 프로그래밍 기능이 있어 반복적으로 수행하는 작업을 하나의 프로그램으로 작성 가능
- 이러한 셸 프로그램을 셸 스크립트라고 지칭함
사용자 환경 설정 기능
- 사용자 환경을 설정할 수 있도록 초기화 파일 기능 제공명령을 찾아오는 경로 설정
- 파일과 디렉터리를 새로 생성할 때 기본 권한을 설정
- 다양한 환경 변수 ( 일반적으로 ex > $대문자 ) 등을 설정
- 사용자별로 사용 환경의 특성을 초기화 파일에 설정
- 로그인 시, 초기화 파일이 실행됨
본 셸(Bourne shell)
- 유닉스 V7에 처음 등장한 최초의 셸
- 개발자의 이름인 스티븐 본(Stephen Bourne)의 이름을 따서 본 셸이라고 함
- 초기에 단순하고 처리 속도가 빨라서 많이 사용
- 경로를 확인해보면 배시 셸과 심벌릭 링크로 연결되어 있음
- 지금도 시스템 관리 작업을 수행하는 많은 셸 스크립트는 본 셸을 기반으로 함
- 히스토리, 에일리어스, 작업 제어 등 사용자의 편의를 위한 기능을 제공하지 못해 이후에 다른 셸들이 등장
- 본 셸의 경로를 확인해보면 배시 셸과 심벌릭 링크로 연결되어 있음
C 셸(C shell)
- 캘리포니아대학교(버클리 캠퍼스)의 빌 조이(Bill Joy)가 개발
- 2BSD 유닉스에 포함되어 발표
- 본 셸에는 없던 에일리어스나 히스토리 같은 사용자 편의 기능 포함
- 셸 스크립트 작성을 위한 구문 형식이 C 언어와 같아 C 셸이라는 이름을 가지게 되었음
- C 셸의 명령 이름 → csh
콘 셸(Korn shell)
- 1980년대 중반 AT&T 벨연구소의 데이비드 콘(David Korn)이 콘 셸을 개발
- 유닉스 SVR 4에 포함되어 발표
- C 셸과 달리 본 셸과의 호환성을 유지하고 히스토리, 에일리어스 기능 등 C 셸의 특징도 모두 제공하면서 처리 속도도 빠름
- 콘 셸의 명령 이름 → ksh
배시 셸(bash shell)
- 본 셸을 기반으로 개발된 셸로서 1988년 브레인 폭스(Brain Fox)가 개발
- 본 셸과 호환성을 유지하면서 C 셸, 콘 셸의 편리한 기능도 포함
- 배시 셸의 명령 이름 → bash
- 배시 셸의 모든 버전은 GPL 라이선스에 의거하여 자유롭게 사용 가능
- 리눅스의 기본 셸로 제공되고 있어 리눅스 셸로도 많이 알려짐
셸 종류 알아보기
- 프롬프트 모양 참조
- $
- 본 셸, 배시 셸, 콘 셸의 기본 프롬프트
- %
- C 셸의 기본 프롬프트
- $
- 사용자 정보 확인: /etc/passwd 파일
- 가장 앞에 나온 정보가 로그인 ID
- 사용자 정보의 가장 마지막에 나온 /bin/bash가 기본 셸
- 현 UNIX의 쉘 종류 알아보기: ps
- 현 UNIX의 쉘의 경로 알아보기: ls –l /bin/sh
로그인 셸과 서브 셸
- 로그인 쉘
- 사용자가 로그인 한 직후 자동 생성되는 기본 쉘
- 프롬프트에서 다른 셸을 실행할 수 있는데 이를 서브 셸이라 함
- 서브 셸은 또 다른 서브 셸 생성 가능
- 서브 셸을 종료하는 명령: ^d(ctrl+d), exit 등
- 로그인 셸에서 로그아웃하면 접속 해제
유닉스 쉘의 사용법 및 환경 변수
배시 셸의 사용법
- 현재 환경 변수의 전체 목록
- declare 명령어
- 입출력 방향 바꾸기
- ① 표준 입출력 장치
- 종류 설명 표준 입력 장치 셸이 작업을 수행하는 데 필요한 정보를 받아들이는 장치 → 키보드
- 표준 출력 장치
- 실행 결과를 내보내는 장치 → 모니터
- 표준 오류 장치
- 오류 메시지를 내보내는 장치 → 모니터
- ① 표준 입출력 장치
입출력 방향 바꾸기
- 파일 관리를 위해 붙이는 일련 번호
- 입출력 장치를 변경할 때는 이 파일 디스크립터를 사용
- 표준 입출력 장치를 파일로 바꾸는 것을 ‘리다이렉션(Redirection)’이라고 함
- 표준 입출력 장치의 파일 디스크립터
배시 셸의 사용법
- 입출력 방향 바꾸기
- 방향 바꾸기
- 출력 재지정
- 입력 재지정
- >, >> (stdout을 파일로 저장 또는 추가)
- < (파일을 stdin으로 전달)
- 파이프( | )
- Process 연결 (stdout 을 stdin 으로 전달)
- Process 간의 데이터 흐름은 자동으로 조절됨
- 출력 리다이렉션
- >
- 기존 파일의 내용을 삭제하고 새로 결과를 저장
- >>
- 기존 파일의 내용 뒤에 결과를 추가
- 1
- 파일 디스크립터 1번
- 셀은 > 를 사용한 리다이렉션에서 지정한 이름의 파일이 없으면 파일을 생성해서 명령의 수행 결과를 저장
- 파일이 있으면 이전의 내용이 없어지고 명령의 수행 결과로 대체
- >
- 예상치 않게 파일의 내용이 겹쳐 쓰이는 상황을 예방하기 위한 설정
- 방향 바꾸기
- 파일에 내용 추가하기 : >>
- 기능
- 파일에 내용을 추가함
- 형식
- 명령 >> 파일명
- 지정한 파일이 있는 경우
- 기존 파일의 끝에 명령의 실행 결과 추가
- 지정한 파일이 없는 경우
- 파일을 생성
- 기능
오류 방향 바꾸기
- 오류 리다이렉션: 표준 오류 메시지를 파일에 저장
- 표준 오류도 기본적으로 화면으로 출력되며 표준 출력처럼 리다이렉션 가능
- 표준 출력 리다이렉션 → 오류 메시지는 리다이렉션 안됨
- 오류 리다이렉션에서는 파일 디스크립터 번호를 생략 불가
- 표준 출력과 표준 오류를 한 번에 리다이렉션하기
- 입력 리다이렉션 : 표준 입력을 바꿈
- 명령 ◎ < 파일명
- 명령 < 파일명
배시 셸의 환경변수 설정 방법
- export 명령어를 통해 실행: 1만 적용(재부팅 시 초기화)
- export PATH=$PATH:$JAVA_HOME/bin
- .bashrc 파일 설정을 수정
- $vi ~/ .bashrc …. 파일의 아랫쪽에 Export PATH=“$PATH:$JAVA_HOME/bin” 를 추가
배시 셸의 환경변수
- CDPATH
- cd 명령에서 사용되는 변수를 설정
- cd 명령의 대상 디렉토리가 상대적 경로 이름으로 지정된 경우 cd 명령이 처음에 현재 디렉토리(.)에서 대상 디렉토리를 찾음
- 대상을 찾을 수 없는 경우, 대상 디렉토리를 찾고 디렉토리 변경이 완료될 때까지 CDPATH 변수에 나열된 경로 이름을 연속해서 검색
- 대상 디렉토리를 찾을 수 없는 경우, 현재 작업 디렉토리가 수정되지 않은 채 남음
- [사례]
- CDPATH 변수가 /home/user1으로 설정되고 두 디렉토리가 /home/user1의 아래 bin와 doc가 있다면, /home/user1/bin 디렉토리에 위치하고 cd doc를 입력하면 전체 경로를 지정하지 않더라도 디렉토리가 /home/user/doc로 변경
- HOME
- 사용자의 홈 디렉토리에 대한 경로를 설정
- LANG
- 로케일을 설정
- LOGNAME
- 현재 로그인한 사용자의 이름을 정의 - LOGNAME의 기본값은 로그인 프로그램에서 passwd 파일에 지정한 사용자 이름으로 자동으로 설정 - 이 변수는 참조만 해야 하고 재설정하면 안 됨
- MAIL
- 사용자의 메일함에 대한 경로를 설정
- MANPATH
- 사용 가능한 매뉴얼 페이지의 계층을 설정 [주 의] Oracle Solaris 11부터 MANPATH 환경 변수는 더 이상 필요하지 않음, man 명령은 PATH 환경 변수 설정에 따라 적합한 MANPATH를 결정
- PATH
- 사용자가 명령을 입력할 때 실행할 프로그램을 찾기 위해 셸이 검색하는 디렉토리를 순서대로 지정
- 디렉토리가 검색 경로에 없으면 사용자가 명령의 전체 경로 이름을 입력해야 함
- 로그인 프로세스의 일부로 기본 PATH가 자동으로 정의되고 .profile에 지정된 대로 설정
- PS1
- bash 또는 ksh93 셸에 대한 셸 프롬프트를 정의
- SHELL
- make, vi 및 다른 도구에서 사용되는 기본 셸을 설정
- TERMINFO
- 대체 terminfo 데이터베이스가 저장되는 디렉토리의 이름을 지정
- /etc/profile 또는 /etc/.login 파일에서 TERMINFO 변수를 사용
- TERMINFO 환경 변수를 설정할 때 시스템은 먼저 사용자가 정의한 TERMINFO 경로를 검사
- 사용자가 정의한 TERMINFO 디렉토리에서 터미널의 정의를 찾지 못하면 기본 디렉토리 /usr/share/lib/terminfo에서 정의를 검색
- 시스템이 어느 위치에서도 정의를 찾지 못하면 터미널이 "dumb"로 식별됨
- TERM
- 터미널을 정의
- /etc/profile 또는 /etc/.login 파일에서 재설정해야 함
- 사용자가 편집기를 호출할 때 시스템이 이 환경 변수에 정의된 동일한 이름의 파일을 찾음
- 터미널 특성을 확인하기 위해 TERMINFO로 참조된 디렉토리를 검색
- TZ
- 시간대를 설정
- 시간대는 ls -l 명령에서 날짜를 표시하는 데 사용
- TZ가 사용자 환경에 설정되지 않은 경우 시스템 설정이 사용
- 그렇지 않으면 GMT(Greenwich Mean Time)가 사용
728x90
반응형
'TEAM STUDY > LINUX' 카테고리의 다른 글
쉘 스크립트와 쉘 변수 다루기 (0) | 2021.01.23 |
---|---|
유닉스 쉘 익히기 (0) | 2021.01.16 |
유닉스 쉘의 기능과 종류 (0) | 2021.01.16 |
[ 리눅스 마스터 ] 디렉토리 ? (0) | 2021.01.13 |
vi 입력과 수정 (0) | 2021.01.10 |