본문 바로가기

컴퓨터 기본/Linux

[Linux] 셸(shell) 종류, 환경설정, history 명령

shell 종류

본 셸

bourne shell (=BShell)

  • AT&T 벨 연구소의 Steven Bourne
  • 유닉스 표준 셸
  • 실행파일: /bin/sh
  • 여러 운영체제에서 사용가능
  • 요즘 거의사용 안함(대신 bash 사용)

korn shell

  • 명령어 완성, 히스토리
  • 실행파일: /bin/ksh

bash shell

  • 리눅스 표준 셸
  • 본셸을 기반으로 GNU 프로젝트에 의해 개발됨
  • 명령어 완성 기능, 히스토리, 명령어 치환, 편집
  • POSIX 와 호환
  • 실행파일: /bin/bash

z shell

  • 강력한 history, 향상된 명령행 편집기능
  • 강력한 자동완성기능
  • 탭, 화살표를 이용한 선택 기능
  • 실행파일: /bin/zch

 

C 셸

C 셸 (=csh)

  • C 언어의 특징이 포함됨
  • 히스토리, 별명, 작업 제어 기능
  • 실행파일: /bin/csh
  • 요즘 거의사용 안함(tcsh 가 출시되어서)

tc 셸 (=tcsh)

  • 확장 C 셸. BSD 에서 가장 많이 사용
  • 명령어 및 명령행 편집기능, history explorer, 자동완성, 자동 logout
  • 실행파일: /bin/tcsh

 

참고. 프롬프트 시작 기호

  • 본셸: $ 로 시작
  • C셸: %로 시작

 

$ 로 시작하는 bash

 

단, bash에서 root 사용자는 #으로 시작한다.

 

shell 명령어

명령어 기능
csh -ㅣ 시스템에서 사용 가능한 셸 목록 확인
echo $SHELL 현재 로그인한 사용자의 셸 확인
cat /etc/shells 현재 시스템에서 사용할 수 있는 셸 목록 확인
ls /etc/shells /etc 의 shells 유무 확인
chsh 현재 사용하는 셸을 변경하기

 

shell 환경변수

환경변수 vs 셸 변수

환경변수(=전역변수)

  • 전체 셸에서 사용 가능한 변수
  • 서브 셸에 기능 상속 가능
  • 확인 명령어: env

셸 변수(=지역변수)

  • 현재 로그인한 셸에서만 사용 가능 
  • 서브 셸에 기능 상속 불가능
  • 확인 명령어: set

 

주요 환경변수

변수 기능
PATH 실행할 명령어 경로 검색
HOME 사용자 홈 디렉토리 절대경로
HOSTNAME 호스트 이름
USER 사용자 이름
DISPLAY X-window 시스템에서, 화면 출력시 접속할 서버주소
PS1 셸 프롬프트 선언시 변수
PS2 셸 프롬프트 선언시 변수 2차
PWD 현재 디렉토리 절대경로
SHELL 로그인 셸 절대경로
TERM 터미널 종류
TMOUT 로그아웃 설정 시간
LANG 기본 설정된 언어
PRINT 기본 프린터
MAIL 메일저장 경로

 

환경변수 설정

명령어 기능
export 환경변수 목록 출력
export [변수]=[변수값] 환경변수 등록하기
echo $[변수] 환경변수 값 확인
export [변수]=$[변수]:[변수값] 기존 변수에 값 추가하기
: 뒤에 추가할 값 넣기
unset [변수] 환경변수 해제

 

프롬프트 형식 설정

명령어 내용
\t time
24시 형식으로 표시
\W way 혹은 where
현재 디렉토리 표시 방법
절대경로 중에서 마지막 디렉토리 표시
\w way 혹은 where
현재 디렉토리 표시 방법
절대경로를 전부 나열해서 표시
\s shell
사용중인 셸 이름
\u user
현재 사용자
\h host
호스트 이름

 

환경설정 파일

셸 시작시 자동으로 실행되는 파일 목록이다.

 

 

전역파일

  • 사용자에게 공통으로 영향을 준다.
  • /etc 에 위치
    • /etc/profile
      • 모든 사용자의 셸 환경을 제어하는 전역적인 시스템 설정 파일
      • 환경변수와 bash 가 수행시 실행되는 프로그램을 제어
      • 관리자만 설정 가능
    • /etc/bashrc
      • alias 와 bash 수행시 실행되는 함수 제어
    • /etc/profile.d
      • 스크립트 파일의 경로를 지정함
      • 부팅시 자동실행됨

지역파일

  • 개별 사용자마다 설정됨
  • 사용자의 home 디렉토리에 숨겨져 있다.
    • ~./bash_profile
      • 개별 사용자의 셸 환경제어하는 시스템 설정 파일
      • 사용자가 로그인하면 적용됨
    • ~./bash_history
      • 사용자가 명령한 내용이 기록된다
    • ~./bashrc
      • 사용자가 지정한 alias. bash 수행시 실행되는 함수 제어
    • ~./bash_logout
      • 사용자의 로그아웃 직전에 실행되는 설정 파일

(~ 을 사용한 이유: 사용자의 홈 디렉토리에 위치해 있음. 즉 사용자 이름에 따라 달라짐)

 

 

history 기능

명령어 기능
!! 직전 명렁어 실행
!n n번째 명령어 실행
!-n n개수 이전의 명령어 실행
!xxx xxx를 포함하는 최근 명령어 실행

 

history 환경변수

명령어 기능
HISTSIZE 히스토리 스택의 크기. 단위는 명령어 개수
HISTFILE 히스토리 파일 위치
HISTFILESIZE 물리적인 히스토리 파일 크기
HISTTIMEFORMAT 히스토리 명령어 수행시간 형식
HISTCONTROL  중복되는 명령어 기록 여부 지정