셸이란?
커널과 사용자간 다리 역할을 하는것. 사용자로부터 명령을 받아 해석하고 실행하는 역할.
리눅스는 본셸(sh)을 기본으로 ksh와 csh 장점을 결합한 bash를 표준으로 한다.
- sh : 본셸(Bourne Shell) 1977년 AT&T 벨 연구소에 근무하는 스티븐 본이 개발한 유닉스 버전 7의 기본 셸
- bash : 1989년 브라이언 폭스가 GNU 프로젝트를 위해 개발한 배시셸. 본셸을 기반으로 만들어졌다.
- csh : C 셸 1978년 버클리 대학의 빌 조이가 개발. C 언어를 기반으로 만들어졌다. 히스토리 기능, Alias 기능, 작업 제어 등 유용한 기능들을 포함하였다.
- tcsh : 1975년 켄 그리어가 티넥스 운영체제에 명령행 완성 기능을 반영하고 csh와 통합해서 탄생
- ksh : 콘셸(Korn Shell) 198년 AT&T 벨 연구소에 근무하는 데이비드 콘이 개발. sh를 확장해서 만들어졌다. 작업 제어, Alias, 히스토리 기능 및 vi와 같은 명령행 편집 기능, 명령행 완성 기능 등을 제공한다.
셸 확인
echo $SHELL
셸 변경
chsh 입력 후 변경하려는 셸의 절대 경로
변경 가능한 셸 확인 chsh -l
사용자 셸 정보 확인
/etc/passwd 의 7번째 필드 내용
셸에선 0 : 참 1 : 거짓
셸 환경 설정
- 셸 변수 : 특정한 셸에서만 적용되는 변수 '변수명=값' 으로 선언 'echo $변수명' 으로 확인
- 환경 변수 : 약속으로 정해진 변수명을 사용하고 bash에서는 PATH, SHELL 등과 같이 대문자로 지정되어있다. env 환경변수리스트확인
환경 변수
미리 정해진 환경 변수 목록
- HOME : 사용자 홈 디렉터리
- PATH : 실행 파일을 찾는 디렉터리 경로
- LANG : 셸 사용 시 기본으로 지원되는 언어
- PWD : 현재 작업 디렉터리
- SHELL : 사용자 로그인 셸
- USER : 사용자 이름
- PS1 : 프롬프트 변수
- PS2 : 2차 프롬프트 변수
- HISTFILE : 히스토리 파일의 절대 경로
- HISTSIZE : 히스토리 파일에 저장되는 개수
- HISTFILESIZE : 히스토리 파일 크기
- HOSTNAME : 시스템 호스트명
- TMOUT : 미사용시 로그아웃 타임
- UID : 사용자 UID
명령어 History
history 명령어 입력시 히스토리 리스트를 출력하며 기록 리스트는 .bash_history 라는 파일에 기록된다. 명령어 '!'로 대체할 수 있다.
명령문
- !! : 마지막에 사용한 명령어 실행
- !n : n번째 사용한 명령 실행
- !-n : 사용한 명령 목록에서 역으로 n번째
- !문자열 : 최근에 사용한 명령 중 '문자열'로 시작하는 명령 실행
- !?문자열? : 최근에 사용한 명령 중 '문자열'을 포함하고 있는 명령 실행
- ^문자열1^문자열2 : 마지막 명령문의 '문자열1'을 '문자열2'로 대체하여 실행
그룹 명령 실행
- : : 한 줄에 여러 명령 나열 실행, 입력 순서대로 순차 처리
- || : 논리적 OR, 앞 명령이 성공이면 결과 출력, 실패시 뒤 명령을 실행하여 출력
- && : 논리적 AND, 앞 명령이 성공해야 뒤 명령 실행
tee
파이프 연결 출력을 두 갈래로 나눌 때 사용되는 명령. 이것도하고 다음것도 하고
tee [option] [파일]
- i : 인터럽트 무시
- a : 덮어쓰지 않고 내용 뒤에 추가
ex) ll | tee test.txt |more
ll 결과를 text.txt에 쓰고 more로 화면에도 출력
산술 연산
expr 명령으로 산술 연산 가능
expr 값 연산자 값
연산자 목록 : +, -, *, /, %
* 사용시 이스케이프 문자를 사용해야한다. $[ ]를 사용하면 가독성이 좋다.
echo $[ 값 연산자 값 ]
셸 설정 파일, 디렉터리
- /etc/profile : 모든 사용자에 적용되는 환경 변수와 시작 관련 프로그램 설정
- ~/.bash_profile : 개인 사용자에 적용되는
- /etc/bashrc : 모든 사용자에 적용되는 alias와 함수 설정
- ~/.bashrc : 개인 사용자에 적용되는
- ~/.bash_logout : 개인 사용자가 로그아웃 할 때 수행되는것 설정
- /etc/profile.d/ : 응용 프로그램에서 시작할때 설정을 위한 스크립트가 위치하는 디렉터리