[LINUX] 쉘의 이해와 환경변수


1. 셸의 이해


# 셸의 개념과 특징


1) 셸(Shell)이란

- 셸은 커널과 사용자간의 다리 역할을 하는 것으로 사용자로부터 명령을 받아 그것을 해석하고 프로그램을 실행하는 역할을 한다.

- Bourne 셸, C 셸, bash, ksh, tcsh, zsh 등이 있다.



# 셸의 확인과 변경

- chsh명령로 확인 및 수정
- 사용자의 로그인 셸 정보는 /etc/passwd의 7번째 필드에 기록



# 주요 환경변수

- HOME : 홈디렉토리
- PATH : 실행 파일을 찾는 디렉토리 경로
- SHELL : 사용자의 로그인 셸
- HISTFILE : 히스토리 파일의 절대경로
- HISTSIZE : 히스토리 파일에 저장되는 명령어 개수
- HISTFILESIZE : 히스토리 파일 크기


# 명령어 History 기능

- !! : 마지막에 사용한 명령을 실행
- !n : n번째 사용한 명령을 실행
- !-n : 역으로 n번째 명령을 실행


# 배시셸 관련 파일 및 디렉토리

- /etc/profile : 시스템 전체(모든 사용자)에 적용되는 환경 변수와 시작 관련 프로그램 설정.
- /etc/bashrc : 시스템 전체(모든 사용자)에 적용되는 alias와 함수를 설정.
- /etc/profile.d : 몇몇 응용 프로그램들이 시작할 때 필요한 스크립트가 위치하는 디렉터리.





2. Shell Programming

# 셸 프로그래밍 문법

1) 아규먼트 변수

- $0 : 실행된 셸 스크립트 명
- $# : 스크립트로 넘겨진 아규먼트의 개수
- $$ : 셸 스크립트의 PID




3. 프로세스의 개념 및 종류


  • fork 방식 : 새로운 프로세스를 위해 메모리를 할당받아 복사본 형태의 프로세스를 실행하는 형태로 기존의 프로세스는 그래도 실행되어 있다.(보통의 명령어 실행방법)
  • exec 방식 : 원래의 프로세스를 새로운 프로세스로 대체하는 형태로 호출한 프로세스의 메로리에 새로운 프로세스의 코드로 덮어씌워 버린다.

# 프로세스의 종류

  • 포어그라운드 : 보통 셸에서 명령을 실행하면 종료될때 까지 기다려야한다. ( 'fg %작업번호' 또는 'fg 작업번호' 명령어 사용 )
  • 백그라운드 : 눈에 보이지 않게 뒤에서 실행시키는 방식( 실행명령어 뒤에 & 추가 , [Ctrl] + [z]를 눌러 중지하고 bg)

# 시그널(Signal)

  • SIGHUP(HUP) : Hangup의 약자로 로그아웃과 같이 터미널에서 접속이 끊겼을 때 보내지는 시그널, 재시작할 때 사용 - 번호 1
  • SIGINT(INT) : 키보드로부터 오는 인터럽트 시그널로 실행을 중지( [Ctrl] +[c] ) - 번호 2
  • SIGQUIT(QUIT) : 키보드로부터 오는 실행 중지 시그널( [Ctrl]+[\] ) - 번호 3
  • SIGKILL(KILL) : 무조건 종료, 프로세스 강제로 종료 - 번호 9
  • SIGTERM(TERM) : Terminate의 약자로 정상 종료시키는 시그널로 kill 명령의 기본 시그널 - 번호 15
  • SIGCONT(CONT) : Continue 시그널로 STOP 시그널 등에 의해 정지된 프로세스를 다시 실행 - 번호 18
  • SIGSTOP(STOP) : 터미널에서 입력된 정지 시그널 - 번호 19
  • SIGTSTP(TSTP) : 실행 정지 후 다시 실행을 계속하기 위해서 대기시키는 시그널( [Ctrl]+[z] ) - 번호 20

0 댓글