셸의 기본
- 사용자가 입력한 명령을 해석해 커널에 전달하거나 커널의 처리 결과를 사용자에게 전달하는 역할을 한다.
Rocky Linux의 bash
- Rocky Linux에서 기본적으로 제공하는 셸은 bash(Bourne Again SHell) 이다.
- Bash는 Bourne Shell(sh)을 기반으로 Korn Shell(ksh)과 C Shell(csh)의 좋은 점을 합한 셸이다.
- bash의 특징
- Alias 기능(명령어 단축 기능)
- History 기능
- 연산 기능
- Job Control 기능
- 자동 이름 완성 기능(tab)
- 프롬프트 제어 기능
- 명령 편집 기능
※ alias는 긴 명령을 단축하는 명령이다.
예) 'ls al' 을 'ls2' 라는 명령으로 줄여서 하용하고 싶다면 alias ls2="ls -al" 명령을 실행하면 된다.
셸의 명령문 처리 방법
- 셸 명령문은 명령문과 함께 여러 가지 옵션이나 인자(Argument)를 사용할 수 있다.
- 명령문 형식
- (프롬프트) 명령어 [옵션...] [인자...]
환경 변수
- 설정된 환경 변수는 echo $환경변수 형식으로 명령을 실행해 확인할 수 있다.
- bash의 주요한 환경 변수
| 환경 변수 | 설명 | 환경 변수 | 설명 |
| HOME | 현재 사용자의 홈 디렉터리 | PATH | 실행 파일을 찾는 디렉터리 경로 |
| LANG | 기본 지원되는 언어 | PWD | 사용자의 현재 작업 디렉터리 |
| TERM | 로그인 터널 타입 | SHELL | 로그인해서 사용하는 셸 |
| USER | 현재 사용자의 이름 | DISPLAY | X 디스플레이 이름 |
| COLUMNS | 현재 터미널의 컬럼 수 | LINES | 현재 터미널 라인 수 |
| PS1 | 1차 명령 프롬프트 변수 | PS2 | 2차 명령 프롬프트(대개는 '>') |
| BASH | bash 셸의 경로 | BASH_VERSION | bash 버전 |
| HISTFILE | 히스토리 파일 경로 | HISTSIZE | 히스토리 파일에 저장되는 개수 |
| HOSTNAME | 호스트의 이름 | USERNAME | 현재 사용자 이름 |
| LONGNAME | 로그인 이름 | LS_COLORS | 'ls' 명령어의 확장자 색상 옵션 |
| 메일을 보관하는 경로 | OSTYPE | 운영체제 타입 |
- 환경 변수값을 변경하려면 export 환경변수=값 형식으로 명령을 실행한다.
- 그 외 환경 변수는 printenv 명령을 실행해서 확인할 수 있다. (일부는 없음)
셸 스크립트 프로그래밍
- 리눅스의 셰르 스크립트 문법은 C 언어의 문법과 유사하다.
- 별도로 컴파일하지 않고 텍스트 파일 형태로 셸에서 바로 실행할 수 있다.
셸 스크립트 작성과 실행

[소스 설명]
- 1행: 특별한 형태의 주석(#!)으로 bash를 사용하겠다는 의미다. 첫 행에 꼭 써줘야 한다.
- 2~3행: echo는 화면에 출력하는 명령이다.
먼저 "사용자 이름: "이라는 글자를 출력하고, 옆에는 $USER라는 환경 변수의 내용을 출력한다 - 4행: 종료 코드를 반환하게 해 준다. (0은 성공을 의미한다.)
셸 실행
- sh 명령으로 실행
- sh 스크립트파일 명령을 입력해 셸 스크립트를 실행할 수 있다.

- sh 스크립트파일 명령을 입력해 셸 스크립트를 실행할 수 있다.
- '실행 가능' 속성으로 변경 후 실행
- 셸 스크릭트 파일의 속성을 '실행 가능'으로 변경한 후 ./스크립트파일 명령을 입력해 셸 스크립트를 실행할 수 있다.
- chmod +x 파일명 명령은 현재 파일의 속성에 '실행 가능' 속성을 추가하라는 의미
- ./name.sh 에서 앞에 '.'은 현재 디렉터리를 의미한다.

※ 모든 사용자가 셸 스크립트를 사용할 수 있게 설정하는 방법
- 위 셸 스크립트를 다른 사용자도 사용하게 하려면 /usr/local/bin/ 디렉터리에 복사하고 권한을 755로 변경하면 된다.

변수
- 셸 스크립트에서는 변수를 사용하기 전에 미리 선언하지 않으며 처음 변수에 값이 할당될 때 자동으로 변수가 생성된다.
- 변수에 저장하는 모든 값은 문자열(String)로 취급한다. 즉, 숫자를 넣어도 문자로 취급한다.
- 변수 이름은 대소문자를 구분한다.
- 변수를 대입할 때 사용하는 '=' 앞뒤에 공백이 없어야 한다.

변수의 입력과 출력
- $ 문자가 들어간 글자를 출력하려면 ''로 묶거나 \를 붙여야 한다.
- ""로 변수를 묶어도 묶지 않아도 된다.
- 셸 스크립트

- 셸 스크립트 실행 결과

숫자 계산
- 변수에 저장한 값으로 연산하려면 expr 키워드를 사용한다.
- `(역따옴표)로 묶어야 한다.
- 괄호를 사용하려면 \(역슬래시)를 붙여야 한다.
- +,-,/와 달리 * 기호는 예외적으로 \(역슬래시)를 붙여야 한다.
- 셸 스크립트

- 셸 스크립트 실행 결과

파라미터 변수
- 파라미터(Parameter, 인자) 변수는 $0, $1, $2 등의 형태를 갖는다.
- dnf -y install gftp 명령을 실행한다고 가정할 때 파라미터 변수는 다음과 같다
명령 dnf -y install gttp 파라미터 변수 $0 $1 $2 $3 - 전체 파라미터 변수는 $* 로 표현한다
- 실행 셸 스크립트

- 셸 스크립트 실행 결과

if문과 case문
- 기본 if문
if [ 조건 ]
then
참일 경우 실행
fi
- 실행 셸 스크립트

- 셸 스크립트 실행 결과

- if~else문
if [ 조건 ]
then
참일 경우 실행
else
거짓인 경우 실행
fi
- 실행 셸 스크립트

- 셸 스크립트 실행 결과

조건문에 들어가는 비교 연산자
- 문자열 비교 연산자
| 문자열 비교 | 결과 |
| "문자열1"="문자열2" | 같으면 참 |
| "문지얄1"!="문자열2" | 다르면 참 |
| -n "문자열" | 문자열이 NULL(빈 문자열)이 아니면 참 |
| -z "문자열" | 문자열이 NULL(빈 문자열)이면 참 |
- 산술 비교 연산자
| 산술 비교 | 결과 |
| 수식1 -eq 수식2 | 두 수식이 같으면 참 |
| 수식1 -ne 수식2 | 두 수식이 다르면 참 |
| 수식1 -gt 수식2 | 수식1이 크다면 참 |
| 수식1 -ge 수식2 | 수식1이 크거나 같으면 참 |
| 수식 -lt 수식2 | 수식1이 작으면 참 |
| 수식1 -le 수식2 | 수식1이 작거나 같으면 참 |
| !수식 | 수식이 거짓이라면 참 |
- 실행 셸 스크립트

- 셸 스크립트 실행 결과

파일과 관련된 조건
| 파일 조건 | 결과 |
| -d 파일이름 | 파일이 디렉터리면 참 |
| -e 파일이름 | 파일이 존재하면 참 |
| -f 파일이름 | 파일이 일반 파일이면 참 |
| -g 파일이름 | 파일에 set-group-id가 설정되면 참 |
| -r 파일이름 | 파일이 읽기 가능 상태이면 참 |
| -s 파일이름 | 파일 크기가 0이 아니면 참 |
| -u 파일이름 | 파일에 set-user-id가 설정되면 참 |
| -w 파일이름 | 파일이 쓰기 가능 상태이면 참 |
| -x 파일이름 | 파일이 실행 가능 상태이면 참 |
- 실행 셸 스크립트

- fname 파일이 일반 파일이면 5행을 불러와라
- 셸 스크립트 실행 결과

- 불러온 파일 내용

case~esac문
- if 문은 참과 거짓으로 '이중 분기'라 한다.
- case문은 여러 가지 경우의 수가 있어 '다중 분기'라 한다.
- 실행 셸 스크립트1

- 셸 스크립트 실행 결과1

- 실행 셸 스크립트2

- 셸 스크립트 실행 결과2

AND, OR 관계연산자
- and는 -a 또는 &&를, or는 -o 또는 ||를 사용해 표현할 수 있다.
- 셸 스크립트

- -f: 일반 파일인지/ -s: 크기가 0이 아닌지
- 셸 스크립트 실행 결과

반복문
for~in문
- 기본 문법
for 변수 in 값1 값2 값3 ...
do
반복할 문장
done
- 실행 셸 스크립트1

- 셸 스크립트 실행 결과1

- 실행 셸 스크립트2

- 셸 스크립트 실행 결과2

- 셸 스크립트 불러온 목록

while문
- 실행 셸 스크립트1

- 셸 스크립트 실행 결과1
- 무한반복으로 [Ctrl] + [C] 으로 정지한다.

- 실행 셸 스크립트2

- 셸 스크립트 실행 결과2

- 실행 셸 스크립트3

- 셸 스크립트 실행 결과3

break, continue, exit, return
- 실행 셸 스크립트

- 셸 스크립트 실행 결과

기타
사용자 정의 함수
- 사용자가 직접 함수를 작성하고 호출할 수 있다.
- 기본 형식
함수이름 () { -> 함수를 정의
내용들...
}
함수이름 -> 함수를 호출
- 실행 셸 스크립트

- 셸 스크립트 실행 결과

함수 파라미터 사용
- 기본 형식
함수이름 () { -> 함수를 정의
$1, $2... 등을 사용
}
함수이름 파라미터1 파라미터2 ... -> 함수를 호출
- 실행 셸 스크립트

- 셸 스크립트 실행 결과

eval
- 문자열을 명령문으로 인식하고 실행한다.
- 실행 셸 스크립트

- 셸 스크립트 실행 결과

export
- 특정 변수를 외부 변수로 선언한다.
- 선언한 변수를 다른 프로그램에서도 사용할 수 있게 한다.
- 실행 셸 스크립트


- 셸 스크립트 실행 결과
- export 외부 변수로 선언한 값만 사용가능

printf
- C 언어의 printf() 함수와 비슷하게 지정한 형식에 맞게 문자를 출력한다.
- 실행 셸 스크립트

- 셸 스크립트 실행 결과

set과 $(명령)
- 리눅스 명령을 결과로 사용하려면 '$(명령)' 형식을 사용해야 한다.
- 결과를 파라미터로 사용하려면 set 명령과 함께 사용해야 한다.
- 실행 셸 스크립트

- 셸 스크립트 실행 결과

shitf
- 파라미터 변수를 왼쪽으로 한 단계씩 쉬프트(이동) 시킨다.
- 실행 셸 스크립트

- 셸 스크립스 실행 결과

'Linux > 기본' 카테고리의 다른 글
| Linux 네임 서버 설치 및 운영 (0) | 2026.06.30 |
|---|---|
| Linux 원격지 시스템 관리 (0) | 2026.06.23 |
| Linux 사용자별 공간 할당 (0) | 2026.06.17 |
| Linux RAID에 Rocky Linux 설치 (0) | 2026.06.17 |
| Linux LVM (0) | 2026.06.16 |