shell 과 shell script (.sh .bat)
shell 쉘이란,
사용자로부터 받은 명령을 kernel이 이해하도록 해석하여 전달하는 명령어 해석기이다.
1. 쉘의 종류
쉘도 여러가지 종류가 있으며, 리눅스의 경우 /etc/shells 을 열어서 확인 가능하다.
각 종류를 모두 설명할 수 없지만 대표적인 두가지를 설명하자면,
/bin/sh : 최초로 만들어진 표준 쉘로 복구 모드에 사용된다. 우분투에서 /bin/sh는 dash로 링크가 걸려있다.
/bin/bash : 리눅스에서 가장 대표적으로 사용되는 쉘이다. 기능이 많은 대신 dash보다 다소 느리다고 한다.
참고로 윈도우의 경우에는 명령프롬프트(cmd)와 PowerShell이 대표적이다. cmd는 모두가 알고있는 DOS와 동일한 구문과 기능을 베이스로하는 간단하고 기본적인 쉘이라면, PowerShell은 MS가 이를 발전시켜 .net 2.0을 기반으로 설계한 뉴페이스 쉘이라고 이해하면 된다.
2. 쉘 스크립트
쉘에 명령어를 직접 한줄한줄 보내도 상관없지만 매우 귀찮기 때문에 스크립트(파일)에 명령어를 전부 적고 한번에 실행되도록 만들 수 있는데 이렇게 만든 파일들을 shell script(쉘스크립트), batch file(배치파일) 이라고 일컫는다.
둘은 같다. shell scrpit = batch file
쉘스크립트는 Linux에서 사용하는 용어이며, 배치파일은 Microsoft에서 사용하는 용어이다.
3. 쉘 스크립트의 종류
쉘스크립트를 만드는 법은 아주 간단한데,
리눅스의 경우는 상단에 이 명령어를 해석할 때 사용할 쉘(명령어 해석기)를 표기해주고, 실행하고자 하는 명령어를 연달아 기입해두면 된다. 이때 파일 확장명은 .sh 로 저장하면 끝!
#!/bin/sh
echo 'start training'
python train.py
윈도우는 더욱 간단한데 그냥 실행하고자 하는 명령어를 순차적으로 입력하고 .bat로 확장명을 저장하면 된다
@echo 시작이야
start C:\Anaconda3\envs\temp\python C:/Projects/train.py
pause
4. 끝으로.. 단계적 정리
kernel(커널) : 운영 체제의 핵심이 되는 프로그램
↓
shell(쉘) : 커널에 명령을 전달하는 프로그램
사용자의 명령어를 커널이 알아들을 수 있도록 하기 때문에 '명령어 해석기' 이자 '유틸리티'에 속한다고 할 수 있다.
운영체제가 제공하는 기능과 서비스를 명령어를 통해 사용할 수 있도록 인터페이스가 주어진다.
↓
shell programing : 쉘에 직접 명령어를 날리는 것
이때, shell창에 명령어를 일일이 쳐서 작업하기 매우 번거롭기 때문에 쉘스크립트를 작성하여 실행한다.
또한 쉘스크립트를 이용하면, 반복 실행 또는 스케쥴링을 걸어 수고로움 없이 코드를 실행시킬 수 있다.