HotFoxy
불여우의 전직 이야기
게임 서버 개발자가 되어 보죠!
전체 방문자
오늘
어제
  • 분류 전체보기 (135)
    • 연구한 이야기 (26)
      • 깊게 공부해보기 (7)
      • 문제 해결 이야기 (12)
      • 맡은 업무 이야기 (6)
    • 전직 이야기 (0)
      • 1년이라는 시간 (5)
      • 프로카데미 이야기 (5)
    • 공부한 이야기 (87)
      • 알고리즘 (7)
      • 리눅스 (11)
      • 클라우드 (24)
      • 윈도우 OS (17)
      • 윈도우 소켓 프로그래밍 (11)
      • 네트워크 (16)
      • Docker & K8S (0)
      • 기타 (1)
    • 자격증 이야기 (12)
  • MSB : Mad Square's Brawl
  • GITHUB

인기 글

최근 댓글

최근 글

티스토리

hELLO · Designed By 정상우.
HotFoxy

불여우의 전직 이야기

리눅스 - Shell
공부한 이야기/리눅스

리눅스 - Shell

2022. 8. 20. 22:40

Shell 종류

본셸 (Bourne shell) 계열과 C셸 계열로 나뉘게 된다.


BourneShell 계열

bourne shell

/bin/sh 의 실행 파일을 가진다.

  • 벨 연구소의 스티븐 본이 1979년에 개발
  • 유닉스에서 기본 셸로 사용

korn shell

/bin/ksh 의 실행 파일을 가진다.

  • AT&T의 데이비드 콘이 1986년 개발
  • 본셸을 확장해서 만들었다.
  • 명령어 완성 기능, 히스토리 확장 기능을 가진다.

bash shell

/bin/bash 의 실행 파일을 가진다.

  • 브레인 폭스가 1989년 개발
  • 본셸을 기반으로 GNU 프로젝트에 의해 개발된다.
  • Linux 표준 셸로 채탱된다.
  • 다양한 운영체제에서 사용되며, 여러 기능들이 지원된다.
  • POSIX 와 호환 가능하다.

z shell

/bin/zsh 의 실행 파일을 가진다.

  • 폴 팔스타드가 1990년에 개발
  • 확장형 본셸이며, korn shell의 재작성 셸이다.

CShell 계열

C shell

/bin/csh 의 실행 파일을 가진다.

  • 버클리 대학의 빌조이가 1981년 개발
  • C언어의 특징을 많이 포함한다.
  • 다양한 프로그래밍 작성 기능을 가진다.

tc shell

/bin/tcsh 의 실행 파일을 가진다.

  • Ken Greer 가 1982년 개발
  • 확장 C셸로서 BSD 계열에서 자주 사용한다.
  • 새로운 환경변수를 포함한다.

셸 확인 및 변경

/etc/shells 를 통해서 사용할 수 있는 셸들을 확인할 수 있다.

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

echo $SHELL 은 현재 로그인한 사용자가 사용중인 셸을 알려준다.


chsh

일반 사용자 환경에서 셸 변경 시 사용한다.

$ chsh [옵션] 계정명 셸
옵션

-s : 지정하는 셸을 추후 로그인 셸로 변경 (Save)

-l : /etc/shells 파일 안에 지정된 셸을 나열 (List)


usermod

관리자 환경에서 지정 사용자의 셸 변경 시 사용한다.

$ usermod [옵션] 계정명
옵션

-s : 지정하는 셸을 추후 로그인 셸로 변경 (Save)


환경 설정

  • 환경 변수
    • 전체 셸에서 사용 가능한 전역 변수
    • 서브 셸에 상속 가능
    • env 명령어를 통해 확인
  • 셸 변수
    • 현재 로그인 셸에서만 사용 가능한 지역 변수
    • 상속 불가능
    • set 명령어를 통해 확인

주요 환경 변수

  • PATH
    • 실행할 명령어 경로
  • HOME
    • 사용자의 홈 디렉터리 절대 경로
  • HOSTNAME
    • 호스트명
  • USER
    • 사용자 이름
  • DISPLAY
    • X-windows 환경에서 X 서버의 주소를 지정
  • PS1 / PS2
    • 셸 프롬프트를 선언 시 사용
  • PWD
    • 현재 디렉터리 절대 경로명
  • SHELL
    • 로그인 셸의 절대 경로명
  • TERM
    • 터미널 종류의 이름
  • TMOUT
    • 로그아웃 관련 시간 제어
  • LANG
    • 프로그램 사용 시 기본 지원 언어

환경 변수 설정

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

환경 설정 파일

셸 시작 시 자동으로 실행되는 고유의 시작 파일이 존재한다.

전역 설정 파일

  • /etc/profile
    • 모든 사용자의 셸 환경을 제어하는 설정 파일
    • 환경 변수와 bash 수행 시 실행되는 프로그램 제어
    • 관리자만 설정 가능하며 모든 사용자에게 적용
  • /etc/bashrc
    • 별칭 (alias) 과 bash 수행 시 실행되는 함수를 제어
  • /etc/profile.d
    • 몇몇 응용 프로그램들이 시작 시 자동 실행할 스크립트 파일 경로를 넣어두는 디렉터리

지역 설정 파일

  • ~/.bash_profile
    • 개인 사용자의 셸 환경을 제어하는 설정 파일
    • PATH, 환경 변수 등을 설정
  • ~/.bashrc
    • 별칭 (alias) 과 bash 수행 시 실행되는 함수를 제어
  • ~/.bash_history
    • 사용자가 명령어나 키보드로 입력한 내용들을 파일에 기록
  • ~/.bash_logout
    • 로그아웃하기 직전에 실행되는 설정 파일

bash shell 의 주요 기능

History 기능

명령어 설명
!! 마지막으로 실행한 명령문 실행
!n n번째 명령어 실행
!-n 최근 순에서 n번 째 전 명령어 실행
!string 'string'으로 시작하는 가장 최근 명령문 실행
!$ / !!$ 마지막 명령의 argument
!* 마지막으로 실행된 명령의 모든 argument
!?string? 'string'으로 시작하는 가장 최근의 단어

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

Alias 기능

명령어 설명
alias 설정되어 있는 alias 확인
alias 별명='명령어 질의' 새로운 alias 정의
unalias 별명 지정된 alias 해제
저작자표시 (새창열림)

'공부한 이야기 > 리눅스' 카테고리의 다른 글

리눅스 - 주변기기  (0) 2022.08.21
리눅스 - 소프트웨어 관리  (0) 2022.08.21
리눅스 - 에디터  (0) 2022.08.21
리눅스 - 프로세스 관리  (0) 2022.08.20
리눅스 - 파일시스템 운용  (0) 2022.08.20
    '공부한 이야기/리눅스' 카테고리의 다른 글
    • 리눅스 - 소프트웨어 관리
    • 리눅스 - 에디터
    • 리눅스 - 프로세스 관리
    • 리눅스 - 파일시스템 운용
    HotFoxy
    HotFoxy
    1년 동안의 고군분투 전직 이야기! ..가 완료되어, 게임개발자로 살아남는 이야기!

    티스토리툴바