[CS] Linux & Terminal

양갱장군·2020년 9월 29일
1

TIL

목록 보기
10/39

✅ Linux ?

Linux는 1991년 Linus Torvals가 개발한 운영체제 이다.

  • Linux는 오픈소스(=무료) 이며 누구나 코드를 볼 수 있음
  • 무료라는 특징 덕분에 궁핍한 개발자들이 많이 사용하게 되었고, 자연스럽게 풍부한 생태계를 이루게 됨
  • 현재 대부분의 서버가 Linux를 기반으로 운영되고 있음 (ex.구글 안드로이드)
  • 서버(로컬 서버, AWS 등에 설치된 인스턴스 등)에 설치된 리눅스 환경을 사용할 수 있음
    ㄴ 예를 들어, 내가 만든 프로젝트를 AWS EC2를 통해 배포하려는데 해당 서버에는 순수한 우분투만 깔려 있음. 따라서 만약 git을 GUI를 통해서만 사용할 줄 안다면 불필요한 리소스 준비 시간이 길어지게 될 것.

⏩ Linux File System Hierarchy (FHS)

Linux의 파일구조는 다음과 같은 tree형태로 구성되어 있다.

  • FHS의 가장 위에는 / 디렉토리가 있다. 이를 Root 디렉토리 (directory) 라고 부름
  • 각 디렉토리들은 slash (/) 로 구분
  • cd: 특정 디렉토리로 이동할 때 사용. / 하나만 입력할 시 root 디렉토리로 이동
  • ls: 해당 디렉토리의 내용물을 나열해보고 싶을 때 사용

⏩ Home Direcotry

home 디렉토리는 유저의 공간이기 때문에 주로 home 디렉토리에서 많은 것을 하게 된다. 그러므로 가장 중요하고 기본이 되는 디렉토리라 볼 수 있다. cd명령어를 실행할 때 경로를 생략하고 cd만 입력하면 자동으로 home 디렉토리로 이동한다.

⏩ Directory 경로

1. Absolute Path

Absolute path는 이름 그대로 절대적 경로 이다. root 디렉토리 부터 시작하는 경로를 뜻한다. (ex. /home/Downloads/image)

2. Relative Path

Relative path는 이름 그대로 "상대적인" 경로 이다.현재 내 위치와 상관없이 이동 할 수 있는 absolute path와 다르게 relative path는 현재 내 위치를 기반으로 움직이는 경로이다.

.(single dot)은 현재 디렉토리를 의미한다. 예를 들어, 현재 /home/Downloads 디렉토리에 위치해 있는데 하위 디렉토리인 image 디렉토리로 가고 싶다면 cd ./image 명령어를 입력하면 된다.

..는 바로 전 디렉토리, 즉 현재 디렉토리의 상위 디렉토리를 뜻한다. 예를 들어, 현재 디렉토리가 /home/Downloads 인데 /home/javascript 폴더로 이동하고 싶다면 cd ../javascript 명령어를 입력하면 된다.

⏩ Config File

리눅스에는 여러 config file, 즉 여러 설정 파일들이 있다. 그 중 가장 중요한 설정 파일이 바로 shell 설정 파일이다. 각 shell 마다 고유 설정 파일이 있다. Bash는 .bashrc 라는 설정파일을 사용하고 zsh는 .zshrc 라는 설정 파일을 사용한다.

먼저 zsh 설정 파일의 위치를 알아보도록 하자. Shell 설정 파일을 비롯한 많은 설정 파일들이 대부분 유저의 home 디렉토리에 있다. Zsh 설정 파일도 마찬가지 이다. 하지만 ls 명령어를 사용하면 .zshrc 파일이 보이질 않는다. 그 이유는 .zshrc 파일은 숨겨져 있는 hidden file이기 때문이다. .zshrc 파일 이름이 . 으로 시작하는것이 보일 것이다. 이렇게 . 으로 시작하는 파일이나 디렉토리는 자동으로 숨겨지게 된다. 그리고 이러한 파일을 "dot file" 이라고 한다.

dot file을 볼려면 ls 명령어에 a 옵션을 주어야 한다. 여기서 a는 all 의 약자인다. 즉 숨겨진 파일이든 안숨겨진 파일이든 다 나열 하라는 뜻이다.

⏩ PATH Enviroment Variable

환경 변수란 shell의 어떠한 설정 값을 가지고 있는 변수를 뜻한다. 그리고 이러한 환경 변수들은 shell이 돌아가는 동안 계속 존재하며 사용된다.

echo $HOME 이라고 입력해보면 HOME 환경변수 값을 출력할 것이다. (그리고 이름에서 나오듯이 HOME 환경 변수는 유저의 홈 디렉토리 경로이다.)

echo $HOME
/home/jjburi

HOME 이라는 환경변수를 선언한 적이 없지만 이미 존재하고 있는것을 알 수 있다. 그 이유는 환경 변수들은 shell 이 시작할때 이미 자동으로 선언되었기 때문이다. Shell은 이러한 환경변수 들을 통해 설정이 된다.

대표적인 환경 변수들은 다음과 같다.

  • HOME: 유저의 home 디렉토리 경로를 저장한 환경 변수
  • USER: 유저의 아이디를 저장한 환경 변수
  • PATH: PATH 값을 저장한 환경 변수

✅ Terminal ?

Linux 서버에서 명령어를 전달하는 수단이다. Linux 서버에 접속해서 작업을 할 때, 텍스트 터미널을 통해 작업하는 경우가 많기때문에 터미널 환경에 익숙해지는 것이 중요하다.

✅ 쉘(Shell) ?

쉘(Shell)은 터미널 환경에서 운영체제의 커널(kernel)과 사용자의 유저 스페이스(user space)를 이어주는 인터페이스(interface) 역할을 하는 프로그램 이다. 대표적인 쉘로는 Bash와 ZSH등이 있다.

Terminal vs Shell
Terminal과 Shell은 다른 개념이다. Terminal은 Shell을 실행시키는 프로그램이다. Terminal에서 Bash를 실행시킬수도 있고 ZShell을 실행 시킬수도 있다.

0개의 댓글