LambFerret's Blog

#5 <운영 및 관리 - 셸> 본문

스터디/리눅스

#5 <운영 및 관리 - 셸>

램페럿 2022. 11. 9. 14:37

2. 셸

  • 개념 및 종류

명령어 해석기 command interpreter

종류 - 본셸($) 계열과 C셸(%) 계열로 나뉜다

C셸 = 본셸 + history + alias + 작업제어 기능

  • 본셸
  1. 본셸 : 유닉스 키본 셸
  2. 콘셸 : 벨 연구소에서 본셸을 확장, 명령어 완성기능 + 히스토리기능
  3. 배쉬셸 : GNU 프로젝트에서 개발, 리눅스 표준 셸, POSIX호환, 명령어 치환, 편집 등 지원
  4. 지셸 : 콘셀의 재작성 셀, 강력한 history 가능, 향상된 명령행 편집기능, 탭혹은화살표키
  • C셸
  1. C셸 : C언어의 특징을 많이 포함, 다양한 프로그래밍 작성기능
  2. tc셸 : BSD계열에서 많이 사용, emacs 자동완성, 자동로그아웃, 새로운 환경변수포함

셸은 사용자가 로그인 후 자동으로 생성되는 로그인 셸과 사용자가 직접 변경하는 서브셸이 있다

명령어

chsh s로그인셸로지정, l설치된셸리스팅
usermod usermod -s [변경셸] [지정유저] 로 사용
  • 환경설정

변수는 환경변수(젼역변수)와 셸변수(지역변수)로 나뉜다

환경변수 : env, 전체셸에서 사용가능

셸변수 : set, 현재 로그인 셸에서만 사용 가능

주요 환경 변수

PATH 실행할 명령어 경로 검색, 셸 설정파일 중 하나에 설정
HOME 사용자 홈 디렉토리 절대경로
HOSTNAME 호스트명
USER 사용자 이름
PS1 셸 프롬프트 선언시 사용하는 변수
PS2 2차 셸 프롬프트 선언시 사용하는 변수
PWD 현재 디렉토리의 절대경로
SHELL 로그인 셸의 절대경로
TERM 터미널 종류의 이름
TMOUT 로그아웃 시간 제어
LANG 프로그램 언어
PRINT 기본 프린터
MAIL 메일저장 경로

명령어

export 환경 변수 리스트 확인
export 변수명 = 변수값 해당 변수명에 변수값 등록 셸변수를 환경변수로 변경
echo $변수명 변수명의 변수값 확인
export 변수명 = $변수명:변수값 기존 변수명에 변수값 추가
unset 변수명 변수 정의 해제

프롬프트 설정 형식

\t 24시로 현재시간 표시
\W 현재 작업 디렉토리 마지막 부분 표시
\w 현재 작업 디렉토리 절대경로 표시
\s 사용중인 셸 이름 표시
\u 현재 사용자 이름표시
\h 호스트 이름 표시

bash 셸 설정 파일

/etc/profile 전역적인 시스템 설정 파일,
/etc/bashrc alias 및 bash가 수행시 실행되는 함수를 전역적으로 제어
~/.bash_profile 개인 사용자의 셸 환경을 지역적으로 설정, PATH, 환경변수등을 설정, 로그인시 로딩
~/.bash_history 사용자의 히스토리 기록
~/.bashrc alias 및 bash가 수행시 실행되는 함수 지역적 제어
~/.bash_logout 로그아웃 직전 실행되는 시스템 설정파일

HISTORY 명령어

!! 마지막으로 실행했던 명령문 실행
!n n번째 명령어 실행
!-n 현재 명령행에서 n 개수를 뺀 행의 명령어실행
!string 가장 최근 string으로 시작하는 명령문 실행
!$ or !!$ 마지막 명령의 argument
!* 마지막 실행된 명령에 사용된 모든 argument
!?string? 가장 최근 string을 포함하고 있는 단어를 나타냄

HISTORY 환경변수

HISTSIZE 히스토리 스택의 크기 지정, 지정시 단위는 명령어 갯수
HISTFILE 히스토리 파일 위치
HISTFILESIZE 물리적인 히스토리 파일 크기
HISTTIMEFORMAT 히스토리 명령어 수행 시간 출력 형태 지정
HISTCONTROL 중복 명령어에 대한 기록 유무를 지정
Comments