Shell vs Kernel
사용자가 명령을 입력하면 그 명령을 컴퓨터가 이해할 수 있도록 하는 프로그램이 Shell이다.
Kernel
- 알맹이, 핵심, 코어 이런 뜻이 있다
- Kernel이라고 하는 프로그램은 하드웨어 즉, 물리적인 기계를 직접적으로 제어하는 OS에서 가장 중심이 되는 코어이다
Shell
- 껍데기, 주변 이런 뜻이 있다
- 사용자는 Linux에서 Shell을 대상으로 명령를 입력하고
- 예) ls -al, ls;pwd 등
- Shell 사용자가 입력한 명령을 해석해서, 커널이 이해할수 있는 방식으로 커널에게 전달해준다
동작
- 커널이라고 하는 프로그램은 하드웨어를 제어해서 어떠한 처리를 수행할 수 있도록 명령한다.
- 하드웨어가 동작하면서 그 처리 결과를 커널에게 알려주면, 커널이 쉘에게 알려주고, 사용자는 실행된 결과를 확인할 수 있다.
Shell 프로그램 : bash vs zsh
- shell 이라는 카테고리에 속하는 구체적인 제품 중 하나인 bash 프로그램을 쓰고 있다
shell 프로그램 zhs를 사용하고 있다
bash와 zsh는 부모가 같기 때문에 상당히 유사한 특성을 가진다.
zshell의 경우 bash가 갖고 있지 않은 추가적인 기능들이 있어서 좀 더 편리하다라고 평가를 받고 있다.
- 자동 완성 기능, cd 등을 좀 더 편리하고 사용할 수 있다
Shell 스크립트
shell script는 쉘을 통해서 명령을 실행시키는 작업을 한번에 실행할 수 있다. => 자동화
#!/bin/bash로 알수 있는 것
- 밑에 작성되는 코드들이 bin/bash 라는 프로그램을 통해서 해석되어야 한다는 표시이다
shell script 예제
- 실행가능한 파일을 만들려면 $ chmod +x {shell파일명}
#!/bin/bash
if ! [ -d bak ]; then
mkdir bak
fi
cp *.log bak
Startup script
우리가 쉘에 접속했을 때(=쉘이 시작되었을 때) , 어떤 특정 명령어가 자동으로 시작되도록 해보자
이런 걸 startup script 또는 스타트업 설정이라고 부른다
대표적으로 alias ll = 'ls al' 과 같은 명령어를 만들 수 있다
꿀팁 alias 사이트
https://www.cyberciti.biz/tips/bash-aliases-mac-centos-linux-unix.html
bashrc
보통 기본 shell은 bash이고, bash는 사용자가 bash를 처음 실행할 때 어떤 특정한 이름의 파일(bashrc)을 실행하도록 약속되어 있다.
(여러가지 파일들을 실행하고 , 맥락에 따라 조금씩 다르지만 일단 PASS~)
[root@cookie cookie]# echo $SHELL
/bin/bash
[root@cookie ~]# ls -al ~ | grep bashrc
-rw-r--r--. 1 root root 176 Dec 29 2013 .bashrc
홈디렉토리에 .bashrc 파일이 있는데, 이 파일이 우리가 shell에 접속할 때, shell이라는 프로그램이 bashrc라고 하는 파일 안에 있는 코드를 실행하도록 약속되어 있다.