쉘이란?
- 윈도우에서 탐색기 or cmd 라고 생각하자
- 우리의 명령어를 컴퓨터에 전달해주는 역할
사용자가 입력한 명령어를 커널에게 변역해주는 역할
- 다시말해 터미널에 입력한 명령을 해석하고 관리하는 프로그램
쉘은 사용자 커널 사이를 연결시켜주는 역할을 하고 사용자가 입력한 명령을 해석하여 운영체제가 해당명령을 알아들을 수 있도록 해준다
쉘의 종류


- 현재 사용중인 쉘은 echo $SHELL 명령어로 확인
- 자동완성은 조금 작성하다가 tap누르면 완성
- 가장 많이 사용되는 쉘은 bash(Born Again Shell)
- 명령행 히스토리, 편집 : 방향키를 사용( ↓, ↑ 이전명령어들을 불러와 준다)
- 쉘은 계속해서 발전하고 있다.
쉘메타문자
경로 이름 메타문자
~
: 현재 로그인 한 사용자의 홈디렉토리
(사용자 정보를 저장하고 잇는 /etc/passwd 파일의 6번째에 설정된 디렉토리)
-
: 이전 작업 디렉토리
(centOS의 Bash 쉘 기준 바로 이 전의 디렉토리만 기억)

파일 이름 메타문자
*
: 하나 이상의 문자를 대체하는 문자, 일반적으로 전체를 의미
?
: 하나의 문자만 대체
인용 부호 메타문자
- ` : 안에 있는 문자를 명령어로 인식하여 실행
''
: 작은 따옴표 안에 있는 메타문자를 일반 문자로 취급
""
: 큰 따옴표 안에 있는 메타문자를 일반문자로 취급하는데 $, `, ₩ 문자는 메타문자로 취급
- $ : 변수를 사용할때 쓰는 메타문자
- ₩ : 바로 뒤에 있는 메타문자를 일반문자로

- echo는 명령어를 보여주는 것
방향 재지정 메타문자
- 쉘을 이용하여 명령어를 주고 받는다
- 우리가 지금 putty를 쓰는데 이건 윈도우에서 탐색기라고 생각

- <, >, | : 세가지 있음
'<'
- 표준 입력 재지정, 잘 사용하지않는다 vi편집기로 대체할 수 있다.
'>'

- 2 에러들은 다른 곳으로 가도록 방향 지정 그래서 정상 친구들만 볼 수 있다.

- 1 표준출력 값 들을 다른 곳으로 가도록 방향 지정 그래서 에러 친구들만 볼 수 있다.
- 표준 출력 및 표준 에러를 재지정, 일반적으로 명령어의 출력을 파일로 저장 또는 네트워크로 전송


'|'
- [명령어1]|[명령어2]처럼 사용하여, 명령어1의 결과를 명령어2의 입력으로 사용

- 명령어 결과의 값에서 다시 명령어를 실행해주는 문자

사용자 초기화 파일
적용 범위
- /etc/profile : 시스템 전역에 걸쳐서 환경을 설정해주는 파일
모든 사용자가 적용되는 파일
- ~/.profile : 개별 사용자의 홈 디렉토리에 있는 파일, 해당 사용자의 설정을 변경할 때 사용
- ~/.bashrc : 개별 사용자의 홈 디렉토리에 있는 파일, 해당 사용자의 쉘 관련 설정을 변경할 때 사용
환경 변수, 쉘 프롬포트 모양(명령어 앞에 붙는 내용), 별명 기능(alias), 쉘 옵션 정의 등 설정이 가능
환경변수
- 시스템 설정을 저장하고 있는 변수 변하는 값, 저장된 값
- HOME : 사용자의 홈 디렉토리
- PATH : 실행파일을 찾는 경로
- LANG : 프로그램 사용시 기본 지원되는 언어
- SHELL : 로그인해서 사용하는 쉘
- EDITOR : 기본 편집기의 이름
- PS1 : 명령프롬프트변수
PATH


- 실행 파일을 찾는 경로
각 종 경로들을 등록해 놓는 환경변수
사람 뿐 아니라 다른 프로그램들을 위해서 설정이 되어 있는 것이다.

PS1
- ' '를 사용하여 안에있는 명령어를 전부 일반문자로 인식되게 끔해야한다(""를 사용하면 \,₩ 메타문자로 인식할 수 있다)
위 내용들을 사용자 초기화에 넣어으면 나중에 재부팅을 하더라도 설정변경 내용이 저장되어 있다