본문 바로가기

자격증/리눅스 마스터

리눅스 마스터 요약정리 #1-3 : 셸(SHELL)

728x90

1. 셸이란

이미지 출처: https://c11.kr/kfky

: 사용자와 커널 사이의 명령어 해석기

: 로그인할 때 실행되어 사용자별로 사용 환경 설정을 가능하게 함

: 강력한 스크립트 언어

: 입출력 방향 재지정과 파이프 ( | ) 기능을 제공

: 포어/백그라운드 프로세스 실행

2. 종류

: 본셸($) 계열와 C셸(%) 계열로 나뉨

: 대부분의 셸은 본셸 계열의 기능을 포함하여 확대 발전한 혀태

: C셸은 본셸의 모든 기능과 명령어 히스토리 별명, 작업 제어 기능을 추가로 가지고 있음

: 아래의 표는 왼쪽에서 오른쪽으로 갈수록 나중에 나온 것임

: dash - POSIX와 호환되는 /bin/sh를 작계 구현한 셸로, 빠른 작업 수행이 특징이지만 히스토리 등 명령 지원 X

본셸 (bourne shell) C셸 (csh) tcsh ksh bash
- 스티브 본 개발
- 최초의 셸
- 빌 조이 개발
- 히스토리 기능 제공
- 별칭(alias) 기능 제공
- csh를 확장한 것
- 명령어 행 자동 완성
- 명령어 행 편집 기능
- 데이비드 콘 개발
- csh를 포함하여 본셸과도 호환
- 브라이언 폭스 개발
- GNU 프로젝트에서 개발
- 히스토리, 자동완성 등 앞서 개발한 기능 대부분 제공
- 리눅스에서 가장 多 사용

: bash 셸의 주요 기능

1) History 기능

  • 일정 개수 이상 사용했던 명령어를 bash_history에 저장해두고 다시 불러서 사용할 수 있게 하는 기능
  • 대부분의 셸은 이전에 입력했던 명령어를 반복하거나 약간 변형하여 다시 사용할 수 있도록 하는 기능

2) alias 기능

  • 자주 사용하는 명령어를 특정 문자로 입력해두고 간편하게 사용할 수 있게 하는 기능
  • alias 별칭='명령어'
  • 별칭 해제 명령어는 unalias
  • 별칭 목록 확인 시 명령어는 alias

3. 셸 확인 및 변경

로그인 셸 확인

: 파일 /etc/shell 에서 사용할 수 있는 셸들을 확인할 수 있음 (ls -l /etc/shell)

: 파일 /etc/passwd 파일에서 계정마다 할당된 셸을 확인할 수 있음

: 명령어 echo $SHELL은 현재 로그인한 사용자가 사용하고 있는 셸을 확인할 수 있음

: 로그아웃 시 실행할 명령은 bash-logout에 입력

 

셸 변경

: 로그인 셸 변경은 반영구적인 셸 변경 방법으로 관리자가 셸 변경 후 다음 변경을 하기 전까지 지정된 셸 사용

: 명령어 chsh - 일반 사용자 환경에서 셸 변경 시 사용

: 명령어 usermod - 관리자 환경에서 지정된 계정자의 정보를 변경할 때 사용하는 명령어

4. 환경 변수와 셸 변수

환경 변수 (전역 변수, env)

: 전체 셸에서 사용 가능한 전역 변수

: 서브 셸에 기능 상속 가능

: 환경 변수 확인 명령 env (printenv)

: 대표적인 환경 변수의 예

  • $SHELL: 현재 사용자가 사용중인 셸
  • $TERM: 터미널 종류의 이름
  • $LANG: 기본 자원 언어
  • $PS1: SHELL 프롬프트 선언 (기본)
  • $PS2: 2차 SHELL 프롬프트 선언 (보조)

셸 변수 (지역 변수, set)

: 현재 로그인 셸에서만 사용 가능한 지역 변수

: 서브 셸에 기능 상속 불가능

5. 환경 설정 파일

: 셸 시작 시 자동으로 실행되는 고유의 시작 파일이 있음. 이 파일은 사용자 운영 환경을 결정

: 배시셸의 시작 파일

  • /etc/profile: 전체 환경 설정
  • /etc/bashrc: 전체 변수 설정
  • ~/.bash_profile: 사용자별 환경 설정
  • ~/.bashrc: 사용자별 변수 설정

: 셸 파일은 전역적 파일과 지역적 파일로 나뉨

: 파일 /etc/profile.d는 몇몇 응용 프로그램들이 시작 시 자동 실행할 스크립트 파일 경로를 넣어둠

728x90