OS

리눅스 공부하기-4{2023년05월02일}

늦게 시작한 개발자 2023. 5. 3. 10:25

쉘에 대해 공부하기

https://soopeach.tistory.com/244

 

쉘(Shell, sh)에 대하여...(개요, 종류, Bash의 기본기능)

쉘(Shell, sh)이란? 쉘은 운영체제 커널과 사용자 간의 인터페이스 역할(다리의 역할)을 수행하는 텍스트 기반의 명령어 해석기다. 리눅스는 현재 GUI 환경이 좋재하지만 GUI 환경이 구축되기 이전 CL

soopeach.tistory.com

쉘(shell, sh)

운영체제 커널과 사용자 간의 인터페이스 역할을 수행하는 텍스트 기반의 명령어 해석기.

 

리눅스는 현재 GUI환경이 존재하지만, GUI 환경이 구축되기 이전 CLI환경에서 명령어를 타이핑하여 컴퓨터를 운용.

CLI 환경은 터미널. 명령어를 해석하고 관리하는 프로그램을 쉘(shell이라고 한다.

쉘은 사용자와 커널을 연결시켜주는 역할을 하며, 사용자가 입력한 명령어를 해석하여 운영체제가 해당 명령어를 알아들을 수 있게 해주는 역할.

 

쉘의 종류

Boume Shell(sh)

ㄴ 유닉스 7버전의 기본 쉘(본쉘)

C Shell(csh)

ㄴ C언어 기반으로 개발되어 프로그램 작성 기능이 좋음.

ㄴ History, alias 등 여러 유용한 기능이 있음.

ㄴ 명령행 편집 기능이 없음.

TC Shell(tcsh)

ㄴ C쉘과 통합해서 탕상된 쉘 TC쉘이라고 불림.

ㄴ C쉘에 없는 명령어 자동완성, 편집기능을 지원.

Korn Shell(ksh)

ㄴ 본쉘을 확장해서 만들어진 쉘, C쉘의 여러 기능이 추가됨.

ㄴ History, vi, 명령행 편집 등 여러 기능을 제공.

Boume Again Shell(bash)

ㄴ 본쉘을 기반으로 만들어진 쉘

ㄴ 현재 리눅스의 표준쉘

ㄴ GNU 프로젝트를 위해 개발되었으며 맥 OS 등 여러 운영체제에서 사용됨.

ㄴ sh와 호환되는 문법과 history, 명령행 편집 등 다양한 기능을 가지고 있음.

Z shell(zsh)

ㄴ 본쉘의 확장된 버전.

ㄴ 다양한 기능, 플러그인, 테마가 존재.

   ㄴ 맞춤법 검사.

   ㄴ 로그인 / 로그아웃 감시 기능.

   ㄴ 바이트 코드와 같은 내장 프로그래밍 기능.

   ㄴ 구문의 과학적 표기적 지원.

   ㄴ 부동 소수점 산술 및 기타 기능.

 

본 쉘 / C쉘만 명령행 편집기능이 없음.

위에 나열되어 있는 순서로 개발됨.

 

Bash 쉘의 기본 기능들(일부 zsh과 비교)

- 리눅스에서 가장 많이 사용되는 기능 중 하나

ㄴ 특정 파일이나 디렉토리명이 너무 길어서 불편한 경우 글자 몇 개만 입력한 뒤 Tab을 누르면 자동완성 기능이 동작.

     만약 해당 글자들이 포함되는 파일이 여러개 있다면, Tab을 두 번 눌러 목록을 확인할 수 있음.

 

History 기능

- C 쉘이나 ksh 등 여러쉘이 가지고 있는 기본적인 기능들 중 하나

ㄴ 실행했던 명령어가 히스토리 리스트에 저장되어 방향키 위, 아래로 이전에 사용했던 명령어를 볼수 있으면 해당 명령어 사용 가능.

ㄴ history 명령어 입력시 사용자가 입력했던 명령어들(설정에 따라 다름)을 확인할 수 잇음.

ㄴ history 관련 환경변수로 최대 저장되는 명령어의 개수, 파일크기, 위치등을 확인할 수 있음.

ex) echo $HISTSIZE

ㄴ HISTSIZE : 저장하는 명령어 개수 지정

ㄴ HISTFILESIZE : 실제 히스토리 파일의 크기

ㄴ HISTFILE : 히스토리 파일의 위치

ㄴ HISTCONTROL : 중복되는 명령의 기록 유무 지정

  ㄴ = erasedups : 히스토리에서 중복제거

  ㄴ = ignoredups : 이전 행과 일치하면 등록 안함

  ㄴ = ignorespace : 공백은 기록하지 않음

 

alias 기능

자주 사용하는 명령어들을 특정한 단어로 실행 가능하도록 만들어 줌.

 ㄴ 특정 명령어에 별칭을 지정하여 해당 별칭을 입력하면 설정된 명령어가 실행되도록 만들어 줌.

alias 별칭='명령어'

ex) 이전 11g 설치 당시 .bash_profile에서 명령어를 ss를 입력하면 자동으로 sqlplus 및 계정 로그인이 되었던 점을 기억하면 된다.

export ORACLE_BASE=/app/oracle
export ORACLE_HOME=$ORACLE_BASE/product/19.0.0/dbhome_1
export ORACLE_SID=orcl
export NLS_LANG=AMERICAN_AMERICA.AL32UTF8
export LD_LIBRARY_PATH=$ORACLE_HOME/lib:/lib:/usr/lib:/usr/local/lib
export PATH=$PATH:$ORACLE_HOME/bin

# alias
alias ss='sqlplus / as sysdba'

as sysdba 의 경우는 아이디와 비밀번호 없이 로그인을 할 것이다라는 뜻이다.