배시 셸 환경 설정
- 셸의 환경을 설정하기 위한 값을 저장할 수 있도록 셸 변수와 환경 변수를 제공
- 셸 변수: 현재 셸에서만 사용이 가능하고 서브 셸로는 전달되지 않음(지역변수)
- 환경 변수: 현재 셸뿐만 아니라 서브 셸로도 전달(전역변수)
- set: 셸 변수와 환경변수 모두 출력
- env: 환경변수만 출력
주요 셸 환경변수
- HISTSIZE: 히스토리 저장 크기
- HOME: 사용자 홈 디렉터리의 절대 경로
- LANG: 사용 언어
- LOGNAME: 사용자 계정 이름
- PATH: 명령을 탐색할 경로
- PWD: 작업 디렉터리의 절대 경로
- SHELL: 로그인 셸
- echo: 특정 변수 출력, 변수의 값을 출력할 때는 변수 이름 앞에 특수문자 $를 붙임
변수 설정
- 셸 변수 설정 시 변수명과 문자열 사이에 공백이 있으면 안됨
- export: 환경 변수 설정, -n 옵션 사용 시 환경 변수를 셸 변수로 바꿈
- unset: 변수 해제
alias
- 기존의 명령을 대신하여 다른 이름을 붙이는 기능
- 긴 명령 대신 짧은 명령을 만들어 사용 가능
- 여러 명령을 연결하여 하나의 명령으로 만들 수 있음
- 자주 사용하는 옵션을 포함하여 새로운 이름을 붙여서 사용 가능
- unalias: 해제
history
- 사용자가 이전에 입력한 명령을 다시 불러 사용
- !! : 바로 직전에 실행한 명령 재실행
- !번호 : 히스토리에서 해당 번호의 명령 재실행
- !문자열 : 히스토리에서 해당 문자열로 시작하는 마지막 명령 재실행
프롬프트
- PS1: 환경 변수 PS1에 새로운 형태의 문자열 저장
- 이스케이프 문자는 \를 포함해서 한 글자로 처리, 화면에 문자 그대로 출력되지 않고 셸이 문자의 의미를 해석하여 실행
환경 설정 파일
사용자가 로그인할 때마다 자동으로 실행되는 명령을 저장한 것
시스템 환경 설정 파일
- 시스템을 사용하는 전체 사용자의 공통 환경을 설정하는 파일
- 배시 셸의 시스템 환경 설정 파일: /etc/profile
- 본 셸이나 본 셸과 호환되는 모든 셸에 공통으로 적용되는 .profile 파일
- 배시 셸의 경우 /etc/bash.bashrc 파일 실행
- 시스템 공통으로 적용되는 .bashrc 파일
- 기본 프롬프트를 설정
- sudo 명령과 관련된 힌트를 설정
- 배시 셸이 아닌 경우 프롬프트를 #(root 사용자)나 $(일반 사용자)로 설정
- /etc/profile.d/*.sh 파일을 실행
- 언어나 명령별로 각각 필요한 환경을 설정
- 필요 시 설정 파일을 추가함
사용자 환경 설정 파일
- 각 사용자의 홈 디렉터리에 숨김 파일로 생성하는 파일
- 사용자가 내용을 수정 및 관리 가능
- ~/.profile: 경로 추가 등 사용자가 정의하는 환경을 설정, .bashrc 파일이 있으면 실행
- ~/.bashrc: 히스토리의 크기 설정, 기본 alias나 함수 등을 설정
- ~/.bash_aliases: 사용자가 정의한 alias를 별도 파일로 저장
- ~/.bash_logout: 로그아웃 시 실행할 필요가 있는 함수 등을 설정
셸 스크립트
- 셸이 실행하는 프로그램
- 유닉스 명령 + 셸이 제공하는 프로그램 구성 요소
- 셸 스크립트 파일 이름은 키워드나 에일리어스, 내장 명령과 같은 이름을 쓰지 않는 것이 바람직함
- 셸 명령 실행 순서: alias → 키워드(if, while, until 등) → 함수 → 내장 명령(cd, echo 등) → 스크립트, 유틸리티 등 PATH 경로에 있는 실행 가능한 파일
- exit: 스크립트의 종료, 종료 상태를 $? 변수에 저장
스크립트
- 인터프리터라 불리는 다른 프로그램에 의해 실행되는 프로그램
- JS, Perl, Python 등이 있음
- 최종사용자가 응용 프로그램의 동작을 사용자의 요구에 맞게 수행할 수 있도록 해줌
- 스크립트 언어라고도 하며 응용 프로그램과 독립하여 사용
셸 스크립트 구성 요소
- #!: 매직넘버
- 파일의 가장 처음에 위치
- 스크립트를 실행할 프로그램 지정
- 각 셸마다 제공하는 스크립트 언어의 문법이 조금씩 다르므로, 이 스크립트를 실행할 셸을 지정해 주어야 올바르게 실행됨
- 셸이 아닌, 다른 실행 가능한 명령을 지정해 주어도 됨
- #: 주석
- 셸 명령: 셸이 실행할 수 있는 모든 명령어 사용 가능
- 여러 명령을 반복 수행해야 할 때 스크립트 파일로 저장하여 실행
- 셸 프로그램: 각 셸이 제공하는 프로그램을 위한 구문
- 셸 변수, 인자처리, 각종 연산자, 제어문 등 포함