"윈도우에서 리눅스를 쓸려면 WSL을 사용하면 돼"
다음과 같은 말을 들어는 봤지만, 정작 크게 신경 안 쓰고 있었다.
git bash를 통해 git을 사용했기에 여기서 $ ls, $cd 같은 명령어를 다 쓰고 있는데 WSL을 굳이 써야한다는 생각을 하지 못하였다.
그러나, 윈도우 개발 초기 환경 세팅에 관해 찾아보던 중 WSL을 기본적으로 설치하고 시작한다.
현 시점에서 내가 느끼는 가장 큰 차이는 패키지(프로그램) 다운로드 방법의 차이이다.
윈도우의 경우 한 프로그램을 다운받기 위해서 공식 사이트에 들어가서 해당 설치 파일받고, 이를 실행하여 경로를 지정하는 등의 작업이 필요하다.
그러나, 리눅스 환경의 경우 apt(advanced package tool)를 통해 손쉽게 프로그램 다운이 가능하다.
물론 개발 자체는 WSL을 설치하지 않고도 할 수 있으나 WSL을 설치할 경우 개발 향상성이 높아진다.
git bash를 통하여 리눅스 환경의 명령어를 어느정도 흉내낼 순 있지만, 리눅스 환경에서 개발한다고 할 수는 없다. 이를 WSL을 사용함으로써 윈도우에서 리눅스 환경 상에서 개발이 가능하게 하는 것이다.
굳이 Virtual box 등을 사용하지 않고도 리눅스 환경을 테스트 할 수 있는 것이다.
UI가 없는 커맨드 라인으로만 된 사용환경은 확실히 Virtual box를 사용했을 때보다 쾌적하다.
WSL에 대해 알아보던 중 "그러면 터미널, bash, 쉘은 큰 차이가 뭐지?"라는 궁금증이 들었다.

출처 : https://sourceflower.tistory.com/61
우선, 커널은 하드웨어를 조작하는 가장 기본적은 소프트웨어이다.
그렇기 때문에 2진수로 하드웨어를 조작한다. 이는 사용자가 이용하는데 힘이 들기 때문에 하드웨어에게 명령을 주거나 결과를 받을 때 해석을 해주는 역할이 쉘인 것이다.
이 쉘을 담당하는 프로그램 중 하나가 bash인 것이다.
하드웨어에게 직접적인 명령을 내리는 커널이 아니기에, bash는 그 커널이 인식하도록 명령어를 해석하도록 만들면 된다.
따라서, bash의 종류는 다양하면 그 중 zsh, git bash 등이 있는 것이다.
터미널은 '끝지점, 종점'의 뜻을 가지고 있다.
즉, 끝에서 사용에게 명령어를 입력받고, 결과를 출력하는 곳이다.
예전 컴퓨터 시스템에서는 GUI가 없이 CLI만 있는 환경이었다. 따라서, bash 내용 자체가 CLI terminal에 출력되었다.

출처 : https://www.youtube.com/watch?v=9ZLSLi5a6Xw
그러나 현대 컴퓨터 시스템에선 사용자에게 GUI 환경이 기반이 되면서, GUI 위에 CLI를 구성한 '터미널'이 프로그램으로써 나오게 된 것이다.

정확히는 CLI 터미널을 보여주는 CLI Terminal Emulator이다.