커널
은 프로세스, 메모리, 입출력 시스템, 파일 시스템 등을 관리한다. 즉 운영체제의 핵심 기능을 담당한다.
컴퓨터가 부팅하는 순간 커널 코드가 메모리에 올라가고, 다른 프로그램들과 다르게 항상 메모리에 상주한다. (Memory Resident)
커널은 운영체제의 핵심 기능을 담당하기 때문에 일반 사용자는 커널에 직접 접근할 수 없다. 그래서 간접적으로 커널에서 제공하는 기능을 이용할 수 있도록 System Call
을 제공한다. 즉, 커널에 저장되어 있는 함수임에도 불구하고 사용자가 호출할 수 있도록 한다.
System Call은 커널과 사용자 사이의 인터페이스 역할을 한다.
셸
이란, 사용자로부터 명령을 입력받아 이를 해석하고 OS가 해당 명령을 수행하도록 하는 프로그램이다. (셸도 하나의 프로그램임!!!) 즉, 사용자와 커널 사이의 인터페이스 역할을 한다.
셸을 사용하면 커널의 복잡한 동작 방식을 알 필요 없이 시스템 자원을 쉽게 관리할 수 있다.
echo $0
을 입력하면 현재 사용 중인 셸의 종류를 알 수 있다.터미널
> 환경설정
에서 기본 로그인 셸을 설정할 수도 있다. ls /bin
bash
, zsh
뿐만 아니라 echo
, mkdir
, rmdir
등의 명령어들도 파일의 형태로 존재한다.놀랍게도 이제부터 본론임..
그렇다면 우리는 왜 셸 스크립트를 알아야 하는가? ???? 셸 스크립트는 어떤 경우에 사용될까?
주요 설정파일의 권한 확인
서버 모니터링
개발 환경 셋팅 자동화
미리 작성해 둔 셸 스크립트 파일을 실행만 하면, 개발 환경을 자동으로 셋팅할 수 있다.
신입 사원이 들어왔을 때, 이런 프로그램 설치하시고 어쩌구 저쩌구 문서로 넘겨줄 필요가 없음
우아한 형제들 블로그 참고하세요 ..
함수를 만든다고 생각하면 될 것 같다.
일정한 동작을 하는 스크립트 파일을 만들고, 명령어를 등록해 이 파일을 실행해주세요! 라고 하면, 명령어를 실행할 때마다 해당 파일이 실행된다.
git push
뿐만 아니라 우리가 반복해서 하는 작업들을 자동화할 수 있다는 장점이 있다.
#!/bin/zsh
cd HEllo
mkdir hi
ls
HEllo 디렉토리로 이동 → hi 라는 디렉토리 생성 → ls (현재 디렉토리에 속한 파일들 보여줌)
hi라는 디렉토리가 만들어진 것을 확인할 수 있다! (ls 명령어를 넣었으니까 바로 나타나는거임)
#!/bin/zsh
array=("myDir" "hello" "dir2")
cd HEllo
for str in "${array[@]}";
do
echo $str
done
HEllo 디렉토리로 이동 → array의 값들을 하나씩 출력(echo)
#!/bin/zsh
array=("myDir" "hello" "dir2")
cd HEllo
for str in "${array[@]}";
do
mkdir $str
done
ls
아까는 그냥 값들을 출력해줬다면, 이번에는 그 값을 이름으로 하는 디렉토리를 생성해주고 ls
/bin/bash
프로그램을 통해 해석되어야 한다는 뜻#!/bin/zsh
셸 스크립트로 오만가지 프로그램을 만들 수 있답니다 ..
끝!
셸에 대해서 몰랐던 내용들 콕콕 찔러주는 좋은 글이네요!ㅎㅎ
잘 읽고 갑니당~