shell 의 종류 및 추가

Remark : shell 의 종류 및 추가

쉽게 표현하면 윈도의 command.com(시작-실행-cmd)이 하는 역할처럼 login 이후부터 사용자가 입력하는 명령어를 기계어로 변역하여

커널에 전달하는 역할을 하는 명령어 해석기를 말한다. Shell이란 한마디로 사용자와 운영체제 사이를 Interface시키는 하나의 유틸리티

프로그램이다. 또한 쉘은 사용자가 입력한 명령 라인을 읽어들여 해석하고 리눅스 시스템을 통해서 명령 라인이 실행되게 하는 Command

Interpreter이다. Kernel 과 직접적으로 연결되어 있으며 해석한 결과를 커널로 보낸다. 다시 말해 사용자와 커널과의 대화라고도 할 수

있으며 다른 프로그램으로 넘겨주도록 하고 커널로 보내기도 한다.

Shell의 종류

bash ( Bourne-Again Shell )

프롬프트 : #

실행파일은 /bin/bash

Bourne again shell은 최초로 개발된 쉘인 Bourne shell의 변종이라 할 수 있습니다.
리눅스에서 가장 많이 사용되는 IEEE POSIX 호환이며 Borune shell과 호환되는 쉘로서
GNU 프로젝트에 의해 만들어지고 배포되고 있습니다. 명령행 편집 기능을 제공합니다

sh ( Bourne Shell )

프롬프트 : $

본 쉘 보다는 개발된 C쉘이나 콘 쉘과 기능적인 면을 비교해 보면 본 쉘에 미흡한 점이 있다. 그 중 가장 큰 단점은 상호 대화형(Interactive)

방식을 취하고 있지 않다는 점이다. 이러한 상호 대화형 방식을 사용하고자 한다면 쉘을 바꿔서 작업하는 것이 좋을 것이다.

– Steven Bourne의 Bourne Shell, sh

– 쉘 명령 대본을 작성하는데 이용되는 쉘

– 강력한 명령 프로그래밍 언어 기능을 갖는 쉘

– 가장 오래 동안 모든 유닉스 시스템의 표준 구성 요소

csh ( C 프로그램 스타일의 Shell )

프롬프트 : %

버클리 캘리포니아 대학에서 개발된 프로그래머들에게 적합한 shell입니다. ( csh는 C쉘이며 sh는 본 쉘이다 )
대화형 사용법에서는 Bourne shell과 대부분 호환되지만 전혀 다른 프로그래밍 인터페이스를 가지고 있고, 히스토리 대체라는 복잡한

기능으로 대신하고 있지만 명령행 편집 기능은 제공하지 않습니다.
– Bill Joy의 C Shell, csh

– C언어와 유사한 언어를 사용

– 상호 대화형 방식으로 구성

ksh ( Korn Shell )

프롬프트 : $

일반적으로 유닉스에서 가장 많이 사용되고 있는 shell이며 Bourne shell에 처음으로 현대적
인 shell 기능(C shell로부터 차용한 것이다.)을 도입한 shell 입니다. Bourne shell과 호환
되고, 명령행 편집 기능을 제공합니다.

zsh

프롬프트 : %

Korn Shell과 매우 유사한 셸이지만 Korn Shell보다 더 많고 유용한 기능 등을 추가하여 개선시킨 것이다.

tc Shell

프롬프트 : >

코넬 대학에서 C Shell 수정본에 Korn Shell의 기능을 포함하여 개발된 셸이다. 95%의 C Shell과 5%의 새로운 기능이 추가되어 만들어졌다.

출처: https://unabated.tistory.com/entry/LinuxUnix쉘-Shell-의-정의와-종류?category=269885 [랄라라]

cat /etc/shells —- shells 보기

1. nologin의 절대경로를 which 명령어로 찾는다.

2. chsh  명령어로  FTP만 접속을 허용할 계정의 쉘을 아래와 같이 /usr/sbin/nologin으로 변경을 한다.

3. vi 명령어로 /etc/shells 파일을 열어 제일 아래 줄에 /usr/sbin/nologin을 추가한다.

4. 설정이 완료되었으면 SSH와 FTP에 접속하여 FTP만 접속이 되는지 확인해 본다.

CentOS 등에서는 사용자에게 FTP등의 접속권한만 주고
ssh접속등 쉘의 권한은 주고 싶지 않을때 사용자의 쉘을 /usr/sbin/nologin 으로 고쳐주기만 하면 되었다.

쉘스크립트:

#!/bin/bash 스크립트에서 명령어 해석기가 bash 쉘 임을 미리 알려주는 것