| 일 | 월 | 화 | 수 | 목 | 금 | 토 |
|---|---|---|---|---|---|---|
| 1 | 2 | 3 | 4 | 5 | ||
| 6 | 7 | 8 | 9 | 10 | 11 | 12 |
| 13 | 14 | 15 | 16 | 17 | 18 | 19 |
| 20 | 21 | 22 | 23 | 24 | 25 | 26 |
| 27 | 28 | 29 | 30 |
Tags
- 유닉스명령어
- 정규표현식
- Unix명령어
- 쉘스크립트
- sysadmin
- PackageManagement
- 파일시스템
- linux
- 자바스크립트
- coreutils
- 리눅스명령어
- UNIX
- 사용자관리
- linuxcommand
- 터미널
- UnixCommand
- 명령어
- shell
- cups
- 리눅스
- tcsh
- 시스템관리
- php
- 유닉스
- js
- JavaScript
- environment
- Solaris
- bash
- terminal
Archives
- Today
- Total
ioerror
set 사용법 및 옵션 - 쉘 환경 변수 및 실행 옵션 설정·조회 본문
반응형

set - Set Shell Options and Positional Parameters
set은 유닉스/리눅스 쉘(Bash, Zsh, Sh 등)에서 쉘 옵션을 변경하거나, 위치 매개변수(Positional Parameters)를 설정하고, 현재 정의된 모든 쉘 변수 및 환경 변수 목록을 출력하는 셸 내장(Built-in) 명령어이다. 스크립트 실행 중 오류가 발생했을 때 즉시 중단하게 만들거나, 미정의 변수 사용을 금지하는 등 스크립트의 안정성과 디버깅 효율을 높이는 데 필수적으로 사용된다.
1. 명령어 용도
- 사용가능 OS, Shell
- 쉘 스크립트 작성 시 실행 도중 오류(Non-zero exit code)가 발생하면 즉시 스크립트를 중지하도록 설정하여 파급 효과를 막을 때 사용된다.
- 현재 셸 세션에 로드되어 있는 모든 변수와 함수 목록을 확인하거나, 파이프라인 연산 중 하나라도 실패 시 전체 오류로 처리하도록 설정할 때 활용된다.
2. 명령어 서식
set [-abefhkmnptuvxBCEHPT] [-o option-name] [argument ...]
3. 명령어 옵션
- 주요 옵션 소개 테이블
| 옵션 | 설명 | 사용가능 OS 및 쉘 |
| -e | 명령어 실행 중 하나라도 에러(0이 아닌 반환값)가 발생하면 즉시 셸 스크립트를 종료한다. | All UNIX/Linux Shells |
| -u | 정의되지 않은 변수를 참조하려고 할 때 에러 메시지를 출력하고 즉시 종료한다. | All UNIX/Linux Shells |
| -x | 실행되는 모든 명령어와 그 인자를 실행 직전에 터미널에 출력한다 (디버깅 용도). | All UNIX/Linux Shells |
| -o pipefail | 파이프라인(|)으로 연결된 명령어 중 하나라도 실패하면 파이프라인 전체의 반환값을 실패로 처리한다. | Bash Zsh |
| -o | 현재 설정된 모든 셸 옵션의 활성화(on)/비활성화(off) 상태 목록을 출력한다. | All UNIX/Linux Shells |
| +option | - 대신 +를 붙여 사용하면 지정한 옵션을 비활성화(Disable)한다. (예: set +x) | All UNIX/Linux Shells |
- 명령어 옵션 사용시 결과 예시
# 안전한 셸 스크립트 시작 시 사용하는 표준 옵션 조합 (Strict Mode)
$ set -euo pipefail
# 스크립트 디버깅 모드 활성화 (실행되는 명령어 가공 과정을 그대로 출력)
$ set -x
$ echo "Hello World"
# + echo 'Hello World'
# Hello World
# 디버깅 모드 비활성화
$ set +x
# 현재 셸의 옵션 설정 상태 조회
$ set -o
# allexport off
# braceexpand on
# emacs on
# errexit off
# nounset off
# pipefail off
- errexit (-e): 에러 발생 시 즉시 종료하는 옵션의 켜짐/꺼짐 상태이다.
- nounset (-u): 미정의 변수 사용 제한 옵션의 상태이다.
- pipefail: 파이프라인 오류 감지 옵션의 상태이다.
4. 명령어 특이사항(유의사항)
- Strict Mode 활용: Stack Overflow 및 개발 표준 가이드라인에서는 셸 스크립트 상단에 set -euo pipefail을 선언하는 것을 강력히 권장한다. 예상치 못한 정적 에러나 미정의 변수로 인한 잘못된 동작을 방지해 준다.
- 인자 없이 실행 시: 옵션이나 인자 없이 단독으로 set을 실행하면 현재 셸에 등록된 모든 환경 변수와 지역 변수, 함수 정의까지 방대한 양의 텍스트가 출력되므로 보통 grep이나 less와 함께 조합하여 검색한다.
- + 기호의 역발상: 일반적인 명령어와 달리 set에서 -는 옵션 활성화(Enable), +는 옵션 비활성화(Disable)를 의미하므로 혼동하지 않도록 주의해야 한다.
관련 명령어들
- env: 현재 설정된 환경 변수 목록만 출력하거나 특정 환경 변수를 적용하여 명령을 실행한다.
- export: 변수를 환경 변수로 등록하여 자식 프로세스까지 전달되도록 설정한다.
- unset: 설정된 변수나 셸 옵션을 제거한다.
- shopt: Bash 셸 전용 확장 옵션을 설정하거나 해제한다.
https://ioerror.tistory.com/entry/UNIX-Linux-Command-Reference
UNIX & Linux Command Reference
유닉스 / 리눅스 명령어 표유닉스와 리눅스 환경에서 자주 사용되는 필수 명령어들을 완벽하게 정리한다. 서버 관리, 프로그래밍, 일상적인 시스템 운영 등 어떤 목적이든 터미널 환경을 능숙하
ioerror.tistory.com
반응형
'OS' 카테고리의 다른 글
| share 사용법 및 옵션 - NFS 네트워크 파일 시스템 리소스 공유 및 설정 (0) | 2026.07.29 |
|---|---|
| setenv 사용법 및 옵션 - C 셸 환경 변수 설정 및 조회 (0) | 2026.07.29 |
| sed 사용법 및 옵션 - 비대화형 스트림 에디터를 활용한 텍스트 변환 및 편집 (0) | 2026.07.29 |
| screen 사용법 및 옵션 - 다중 터미널 세션 관리 및 백그라운드 작업 유지 (0) | 2026.07.29 |
| scp 사용법 및 옵션 - SSH 프로토콜을 이용한 원격 파일 안전 복사 (0) | 2026.07.29 |
Comments