[1과목: 리눅스 운영 및 관리]
1. 파일 시스템 관련 명령어
2. 쉘(Shell)
2. 1. 개념 및 종류
2. 1. 1. 개념
- 커널(Kernel)과 사용자간의 인터페이스를 제공
- 사용자가 입력한 명령어를 해석하여 프로그램을 실행
- 로그인할 때 실행되어, 사용자 별 환경 설정 가능
- 강력한 스크립트(Script)언어이며, 쉘 자체가 프로그래밍 기능 보유
2. 1. 2. 종류 ★
- 본쉘(sh; Bourne Shell)계열과 C쉘 계열로 나뉨
- 사용자 프롬프트가 ‘$’이면 본쉘 계열, ‘%’이면 C쉘 계열
- C쉘은 본쉘의 모든 기능과 명령어 히스토리, 별명, 작업 제어 기능을 추가 보유
본쉘 계열 ★★★
종류 | 실행파일 | 특징 |
---|---|---|
본쉘 | /bin/sh | – 벨 연구소의 스티븐 본이 1979년 개발 – UNIX에서 기본 쉘로 사용 |
콘쉘 | /bin/ksh | – AT&T사 벨 연구소의 데이비드 콘이 본쉘을 확장하여 1986년 개발 – 명령어 완성 기능, 히스토리 기능을 가짐 |
배쉬쉘 | /bin/bash | – 브레인 폭스가 1989년에 개발 – 본쉘을 기반으로 GNU 프로젝트에 의해 개발 – Linux 표준 쉘로 채택 – Linux, macOSX 등 다양한 운영체제에서 사용 – 명령어 완성 기능, 히스토리, 명령어 치환, 편집 등 지원 |
지쉘 | /bin/zsh | – 폴 팔스타드가 1990년에 개발 – 확장형 본쉘로 Korn Shell의 재작성 쉘 – 강력한 히스토리, 향상된 명령행 편집, 파일 중간 자동완성 기능 포함 – 탭이나 화살표 키를 이용해 선택 기능 포함 |
C쉘 계열 ★★★
종류 | 실행파일 | 특징 |
---|---|---|
C쉘 | /bin/csh | – 버클리 대학의 빌 조이가 1981년에 C언어 기반으로 개발. – 히스토리, 별명(Alias), 작업 제어 등의 기능 포함 – 다양한 프로그래밍 작성 기능 포함 |
TC쉘 | /bin/tcsh | – Ken Greer가 1982년에 개발 – 확장 C쉘로 BSD계열 UNIX에서 가장 많이 사용 – 명령행 편집 기능 제공 – emacs, history explorer, 자동 완성, 자동 로그아웃 기능 – 로그인 상태, 사용자, 터미널 모니터링 – $host, $hosttype 등의 새로운 환경 변수 포함 |
2. 1. 3. 쉘 확인 및 변경 ★
: 쉘은 사용자가 로그인 후 자동으로 생성되는 로그인 쉘, 사용자가 직접 실행하는 서브 쉘로 구분
로그인 쉘 확인 ★
- /etc/shells 파일에서 사용할 수 있는 쉘 확인 가능
- passwd 파일에서 계정마다 할당된 쉘 확인 가능
- ‘echo $SHELL‘ 환경 변수를 사용한 명령어로 로그인 시 할당된 쉘 확인 가능
- ‘finger -l’명령어 사용
쉘 변경
: 로그인 쉘 변경은 반 영구적인 쉘 변경 방법. 관리자가 쉘 변경 후 다음 변경을 하기 전까지 지정된 쉘 사용
#chsh ★★
: 일반 사용자 환경에서 로그인 쉘 변경
#chsh [옵션] [계정명] [변경쉘]
[옵션]
-s [변경쉘]: 지정하는 쉘을 앞으로 사용할 쉘로 변경
-l: 현재 사용 가능한 쉘 확인(/etc/shells 파일 안에 지정된 쉘)
chsh # chsh명령어 이후 변경할 쉘 추가 입력 chsh -s /bin/bash # chsh -s bash는 사용 불가. 정확한 쉘 경로 입력 chsh --shell /bin/bash
#usermod
: 관리자 환경에서 지정된 계정의 정보를 변경할 때 사용하는 명령어. 옵션으로 쉘 변경 가능
#usermod [옵션] [계정명]
[옵션]
-s [변경쉘]: 기존 쉘에서 새로운 쉘로 변경
2. 2. 환경 설정
2. 2. 1. 환경 변수와 쉘 변수 ★
: 변수는 시스템 환경 정보 저장소로, 환경 변수와 쉘 변수로 구분
환경 변수(전역 변수) ★
- 전체 술에서 사용 가능한 전역 변수
- 서브 쉘에 기능 상속 가능
- 환경 변수 확인 명령어: env
- 주요 환경 변수
- $PATH: 실행할 명령어 경로 검색
- $HOME: 사용자의 홈 디렉터리의 절대 경로
- $PWM: 현재 작업중인 디렉터리의 절대 경로
- $HOSTNAME: 호스트명
- $USER: 사용자명
- $SHELL: 사용자의 로그인 쉘
- $TMOUT: 일정 시간동안 작업을 하지 않을 경우 로그아웃되는 시간
- 환경 변수 관련 명령어
- #export: 환경 변수 리스트 확인
- #export [변수명]=[변수값]: 해당 변수명에 변수값 등록
- #export [쉘 변수명]: 쉘 변수를 환경 변수로 변경
- #echo $[변수명]: 변수값 확인
쉘 변수(지역 변수) ★
- 현재 로그인 쉘에서만 사용 가능한 지역 변수
- 서브 쉘에 기능 상속 불가
- 쉘 변수 관련 명령어
- #set: 쉘 변수 리스트 확인
- #set [변수명]=[변수값]
- #[변수명]=[변수값]: bash에서 set을 생략할 경우 쉘 변수로 지정
- #echo $[변수명]: 변수값 확인
2. 2. 2. 환경 설정 파일 ★
: 쉘 시작 시 자동으로 실행되는 고유의 시작 파일
/etc/profile ★★★
- 시스템 전체의 쉘 환경을 제어하는 전역 시스템 설정 파일
- 시스템 전체에 적용되는 환경 변수와 시작 관련 프로그램을 설정
- 관리자만 설정 가능하여야 하며, 모든 사용자에게 반영
- 로그인 시 실행. bash_profile은 bash로 로그인 시 로드되며 .profile 둘 중 하나만 로드
/etc/profile.d
- 몇몇 응용 프로그램들이 시작 시 자동 실행할 스크립트 파일(.sh)가 저장된 디렉터리
- 보통 /etc/profile에서 호출하여 사용
- 일반 사용자들의 별칭(Alias)설정 등과 관련된 스크립트도 존재
/etc/bashrc ★★★
- Alias와 bash가 수행 시 실행되는 함수를 전역으로 제어
- 사용자가 새로운 쉘을 열 때마다 실행
- 환경 설정은 .profile파일에, Alias와 환경 설정 이외 함수는 .bashrc에 주로 저장
~/.profile & ~/.bash_profile ★★★
- /etc/profile & /etc/bash_profile의 지역 시스템 설정파일
- 개인 사용자의 쉘 환경을 제어
~/.bashrc ★★★
- /etc/bashrc의 지역적인 시스템
2. 2. 3. 히스토리(History)기능 및 환경 변수 ★
히스토리 명령어 ★
: 일정 개수 이상 사용했던 명령어를 개별 사용자의 홈 디렉토리에 존재하는 .bash_history에 저장해 두고 다시 불러서 사용 가능
- !!: 마지막으로 실행했던 명령문 실행
- ![n]: n번째 명령어 실행(최근 사용한 1000개 또는 500개 까지만 가능)
- ![string]: 가장 최근에 ‘string’으로 시작하는 명령문 실행
- !?[vi]?!: 최근에 사용한 명령 중 ‘vi’를 포함하는 명령문을 찾아 실행
- history: 최근에 사용한 1000개(또는 500개) 명령어 출력
- history 3: 최근에 입력한 3개의 명령어 출력
히스토리 환경 변수
- $HISTSIZE: 히스토리 스택의 크기. 단위는 명령의 개수
- $HISTFILE: 히스토리 파일의 경로
- $HISTFILESIZE: 물리적인 히스토리 파일의 실제 크기
- $HISTTIMEFORMAT: 히스토리 명령어 수행 시간
2. 2. 4. 별명(Alias) 명령어
: 자주 사용하는 명령어를 특정 문자로 입력해 두고 간편하게 사용하는 기능
- alias: 설정 되어 있는 별명 확인
- alias [별명] = ‘[명령어]’: 새로운 별명 정의
- unalias [별명]: 별명 삭제