쉘은 리눅스에서 명령어 해석을 담담한다. 특정한 명령어들을 하나의 파일로 묶어 순차적으로 실행할 수 있는데 이 파일을 쉘 스크립트 파일이라고 한다. 주로 반복적인 일을 자동화하는데 사용한다.
현재 사용중인 쉘은 SHELL이라는 환경변수에 정의 되어있다
$ echo $SHELL 명령어를 사용하게 되면 사용중인 쉘을 확인이 가능하다.

또한 사용할 수 있는 쉘들은 /bin/shell파일에 정의 되어 있다.

쉘에서도 타 프로그래밍 언어처럼 변수에 값을 집어넣고 이를 이용해서 출력을할 수 있다.
$ echo Hello world # Hello world 출력

또는 변수에 값을 넣고 출력이 가능하다. $ echo $변수명 변수의 값을 출력 할려면 $를 사용한다.
$ name=Cho
$ echo name # name 출력
$ echo $name # Cho 출력
$ unset name # name 변수 해제
$ echo $name # 공백 출력

다음은 여러가지 변수 사용법이다. 문자열과 변수를 같이 사용할수 있는데 주로 {} 대괄호를 사용하여 변수를 출력해주는 습관이 좋다. 변수를 쉽게 구분할 수 있다.
$ name=Cho
$ echo "My name is ${name}"
$ echo "MinCheol${name}"

``, "", '' 다음 3개의 인용부호는 다르게 작동하는데 의미들을 살펴본다
$ name=Cho
$ echo 'My name is ${name}'
$ echo "My name is ${name}"
$ echo "List: `ls`"
"" -> $, `, \를 제외하고 무시
`` -> 셀 명령어를 실행
'' -> 모든 셸 문자를 무시
일반변수는 다른 언어에서도 사용하듯이 값을 넣을 수 있는 변수이다.
$ name=Cho # name이라는 변수에 Cho 값을 저장
$ name = Cho # 공백을 넣으면 안됨
환경변수는 시스템이 목적을 가지고 사용하는 변수이다. 환경변수는 애플리케이션 또는 시스템에 영향을 받게 된다
그리고 환경변수는 선언은$ export 변수명를 사용하고 변수명은 대문자를 사용해야 한다
$ export NAME=Cho
$ echo ${NAME}

모든 변수명을 보고 싶다면 $ set 명령어를 사용하면된다. 또는 환경변수만 확인하고 있다면 $ env 명령어를 사용하면 된다.