셸(Shell) 관리 및 종류 🖥️
셸 변경 및 조회
-
chsh: 사용자의 로그인 셸을 변경하는 명령어입니다.-s: 변경할 셸의 경로를 지정합니다.-l: 변경 가능한 셸 목록을 출력합니다. (/etc/shells파일 내용)
-
/etc/shells: 시스템에서 사용 가능한 셸의 목록이 저장된 파일입니다.
-
echo $SHELL: 현재 사용자가 로그인 시 부여받은 기본 셸 정보를 출력합니다. (셸 변경 후에도 이 값은 바로 바뀌지 않을 수 있습니다.)
주요 셸의 종류 및 발전 순서
📜 셸 개발 순서 sh → csh → tcsh → ksh → bash → zsh
sh (bourne shell): 최초의 유닉스 셸로, 스티븐 본이 개발했습니다. 많은 셸의 기반이 됩니다.csh (c shell): C언어와 유사한 문법을 가진 셸로, 빌 조이가 개발했습니다.ksh (korn shell):sh와csh의 장점을 결합한 셸입니다.bash (bourne again shell):sh를 기반으로 GNU 프로젝트에서 개발했으며, 현재 대부분의 리눅스 배포판에서 기본 셸로 사용됩니다.zsh (z shell):ksh를 기반으로 다양한 확장 기능(강력한 자동 완성, 테마 등)을 추가한 셸입니다.dash: POSIX 표준을 지향하는 경량화된 셸로, 데비안/우분투 계열에서 시스템 기본 셸(/bin/sh)로 사용됩니다.
셸 환경 설정 파일 ⚙️
💡 Note
- **
profile**이 들어간 파일: 주로 환경 변수 설정에 사용됩니다.- **
rc**가 들어간 파일: 별칭(alias)이나 함수처럼 셸이 시작될 때마다 적용되어야 하는 설정에 사용됩니다.
💡 Note
- /etc/ 경로: 시스템 모든 사용자에게 적용되는 전역 설정 파일입니다.
~/(.bashrc 등): 특정 사용자에게만 적용되는 개인 설정 파일입니다.
사용자별 설정 파일 (~/)
~/.bash_profile: 사용자가 로그인할 때 한 번만 실행됩니다.$PATH같은 환경 변수를 설정하기에 적합합니다.~/.bashrc: 새로운 셸이 시작될 때마다 실행됩니다.alias나 프롬프트(PS1) 설정 등을 저장합니다.~/.bash_logout: 사용자가 로그아웃하기 직전에 실행되는 스크립트입니다.~/.bash_history: 사용자가 입력한 명령어 기록이 저장되는 파일입니다. 로그아웃 시 현재 세션의 기록이 이 파일에 추가됩니다.
전역 설정 파일 (/etc/)
- /etc/profile: 모든 사용자가 로그인할 때 가장 먼저 읽어 들이는 전역 환경 설정 파일입니다.
- /etc/bashrc: 모든 사용자에게 공통으로 적용되는 alias와 함수를 설정하는 파일입니다.
사용자 계정 관리 파일 👤
-
/etc/passwd: 사용자 계정의 기본 정보를 담고 있는 파일입니다.
- 형식:
[유저명]:[비밀번호(x)]:[UID]:[GID]:[사용자정보]:[홈디렉터리]:[로그인셸]
- 형식:
-
/etc/shadow: 사용자의 암호화된 비밀번호와 패스워드 정책을 저장하는 파일로, root만 읽을 수 있습니다.
- 파일 구조 (필드):
Login Name: 사용자 계정명Encrypted: 암호화된 패스워드Last Changed: 마지막 패스워드 변경일Minimum: 최소 패스워드 사용 기간Maximum: 최대 패스워드 사용 기간Warn: 만료 전 경고 기간Inactive: 비활성화 유예 기간Expire: 계정 만료일Reserved: 예약 필드
- 파일 구조 (필드):
-
/etc/login.defs: 사용자 계정 생성 시 적용될 기본값(패스워드 정책, UID/GID 범위 등)을 정의한 파일입니다.

주요 명령어 ⌨️
셸 변수 및 명령어 기록
history: 이전에 사용한 명령어 목록을 보여줍니다.!!: 바로 직전 명령 재실행!-n: n번째 전 명령 재실행!?string?: 문자열string을 포함하는 최근 명령 재실행
alias: 특정 명령어에 별칭을 부여합니다.~/.bashrc에 저장하여 영구적으로 사용할 수 있습니다.unalias: 설정된 별칭을 해제합니다.env: 전역 환경 변수를 조회합니다.set: 지역 셸 변수 및 환경 설정을 조회합니다.- 변수 선언/조회:
VAR="value"로 선언하고$VAR로 조회합니다.
프로세스 및 아카이브
- 백그라운드 실행: 명령어 뒤에
&기호를 붙이면 프로세스가 백그라운드에서 실행됩니다. tar: 여러 파일이나 디렉터리를 하나의 아카이브 파일로 묶거나(c), 푸는(x) 명령어입니다.- 주요 옵션:
c(생성),x(추출),t(목록),v(과정표시),f(파일지정) - 압축 옵션:
z(gzip),j(bzip2),J(xz)
- 주요 옵션:
💡 응용
tar tvf [파일명.tar] | grep [찾을_파일]: tar 아카이브 내에 특정 파일이 포함되어 있는지 확인할 수 있습니다.
gzip: 파일을.gz형식으로 압축하거나 해제(-d)하는 명령어입니다.