Skip to content

Shell

개념

셸(Shell)은 커널과 사용자간의 다리역할을 하는 것으로 사용자로부터 명령을 받아 그것을 해석하고 프로그램을 실행한다. 리눅스에는 sh를 기본으로 kshcsh 계열의 장점을 결합한 bash(Bourne Again shell)을 표준으로 한다.

Shell 확인 및 변경

확인

$ echo $SHELL # 사용중인 셸 확인
$ chsh -l # 변경 가능한 셸 확인
$ cat /etc/shells # 위와 동일

변경

$ chsh
Password: # 비밀번호 확인
New Shell [/bin/bash]: /bin/zsh # 바꾸고자 하는 셸 입력

셸 환경설정

변수

Shell 변수

특정한 셸(Shell)에서만 적용되는 변수, 변수명=값으로 사용할 수 있으며 변수명 앞에 $를 붙이고 echo 명령으로 변수값을 호출한다.

환경 변수

변수 설명
HOME 홈 디렉토리
PATH 실행 파일을 찾는 디렉토리
LANG 셸에서 기본으로 지원하는 언어
TERM 로그인한 터미널 종류
PWD 사용자의 현재 작업 디렉토리
SHELL 사용자의 로그인 셸
USER 사용자 이름
DISPLAY X에서 프로그램 실행 시 출력되는 창
PS1 프롬프트 변수
PS2 2차 프롬프트 변수
HOSTNAME 시스템의 호스트명
MAIL 도착한 메일이 저장되는 경로
TMOUT 일정 시간 작업하지 않을 경우 로그아웃시키는 시간
UID 사용자 UID

bash 주요 기능

history

사용자가 입력한 명령어를 확인, !로 대체하여 사용할 수 있다.

!를 이용한 history 명령

명령어 설명
!! 마지막에 사용한 명령 실행
!n n번째로 사용한 명령을 실행
!-n 반대로 n번째 사용한 명령 실행
!문자열 최근 사용한 ‘문자열’로 시작하는 명령
!?문자열? 최근 사용한 ‘문자열’을 포함하는 명령
^문자열1^문자열2 마지막 명령에서 문자열1을 2로 변경 실행

히스토리 관련 환경변수

변수 설명
HISTSIZE 명령의 개수로 이 값 내에서만 검색이 가능
HISTFILESIZE 실질적인 히스토리 파일의 사이즈
HISTFILE 히스토리 파일의 위치를 보여줌
HISTCONTROL 중복되는 명령에 대한 기록 유무
HISTTIMEFORMAT 히스토리 명령 시 출력되는 시간 형식

alias

지정한 명령을 설정해둔 별명을 통해서 호출하는 기능

$ alias [별명='명령어']
$ unalias 별명

셸 관련 파일 및 디렉토리

파일 또는 디렉토리 설명
/etc/profile 시스템 전체에 적용되는 환경변수와 시작관련 프로그램 설정
/etc/bashrc 시스템 전체에 적용되는 alias와 함수 설정
~/.bash_profile 개인 사용자의 환경 설정과 시작 프로그램 설정 관련 파일
~/.bashrc 개인 사용자가 정의한 alias와 함수들이 있는 파일
~/.bash_logout 개인 사용자가 로그아웃할 때 수행하는 설정을 지정
/etc/profile.d 몇몇 응용프로그램들이 시작할 때 필요한 스크립트가 위치

Last update : 15 décembre 2022
Created : 14 septembre 2019