| 일 | 월 | 화 | 수 | 목 | 금 | 토 |
|---|---|---|---|---|---|---|
| 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
- 시스템관리
- 정규표현식
- linuxcommand
- 사용자관리
- Unix명령어
- 리눅스명령어
- shell
- 유닉스명령어
- UNIX
- php
- environment
- tcsh
- 터미널
- 파일시스템
- JavaScript
- 리눅스
- linux
- 쉘스크립트
- js
- 유닉스
- sysadmin
- cups
- terminal
- 자바스크립트
- PackageManagement
- coreutils
- 명령어
- bash
- Solaris
- UnixCommand
Archives
- Today
- Total
ioerror
unset 사용법 및 옵션 - 쉘 변수 및 함수 제거 명령어 본문
반응형

unset - Unset values and attributes of variables and functions
환경 변수, 지역 변수, 또는 정의된 쉘 함수를 메모리에서 해제하고 지우는 쉘 내장 명령어이다. 변수의 값을 빈 문자열로 만드는 것이 아니라 변수 자체의 정의를 삭제한다. 기본적으로 모든 POSIX 준수 쉘에서 동작하며 Linux, macOS, Unix 환경 전반에서 사용 가능하다. READONLY 속성이 부여된 변수는 해제할 수 없으므로 사용 시 유의해야 한다.
1. 명령어 용도
- 더 이상 필요 없는 환경 변수나 쉘 변수를 제거하여 메모리를 확보하고 하위 프로세스로의 변수 전달을 차단할 때 사용한다.
- shell 스크립트 실행 중 설정된 임시 변수나 단축 함수를 초기화할 때 활용한다.
Bash
# 사용 예시: API 토큰이나 비밀번호가 담긴 환경변수를 사용 후 안전하게 제거할 때
export API_KEY="secret_key_1234"
# ... 작업 수행 ...
unset API_KEY
2. 명령어 서식
Bash
unset [-f] [-v] [-n] [이름 ...]
3. 명령어 옵션
| 옵션 | 설명 | 사용가능 OS 및 쉘 |
| -v | 지정한 이름을 변수(Variable)로 취급하여 해제한다. (기본값) | POSIX Common |
| -f | 지정한 이름을 함수(Function)로 취급하여 해제한다. | POSIX Common |
| -n | 지정한 이름을 이름 참조(nameref) 변수로 취급하여 참조 변수 자체를 해제한다. | [Bash 4.3+] |
명령어 옵션 사용 예시
Bash
# 1. 일반 변수 해제 (-v)
MY_VAR="Hello World"
echo $MY_VAR
# Hello World
unset -v MY_VAR
echo $MY_VAR
# (아무것도 출력되지 않음)
# 2. 쉘 함수 해제 (-f)
my_func() { echo "Function active"; }
my_func
# Function active
unset -f my_func
my_func
# bash: my_func: command not found
# 3. nameref 참조 변수 해제 (-n)
declare -n ref=target_var
target_var="Original Data"
unset -n ref
echo $target_var
# Original Data (참조 변수인 ref만 삭제되고 target_var의 값은 유지됨)
- MY_VAR 변수를 선언 후 unset -v로 해제하면 변수 정의 자체가 사라져 빈값이 출력된다.
- my_func 함수를 정의 후 unset -f로 해제하면 해당 함수가 존재하지 않게 되어 명령어를 찾을 수 없다는 에러가 발생한다.
- unset -n 옵션은 참조 변수(nameref)만을 해제하고 원본 변수의 값은 그대로 유지시킨다.
4. 명령어 특이사항(유의사항)
- readonly로 선언된 변수(예: readonly VAR="value")는 unset으로 해제할 수 없으며, 시도 시 에러가 발생한다.
- 옵션을 지정하지 않으면 변수를 먼저 해제하려고 시도하고, 변수가 없으면 같은 이름의 함수를 해제한다.
- unset은 쉘 내장 명령어(Built-in Command)이므로 별도의 바이너리 파일(/bin/unset 등)로 존재하지 않는다.
- PATH, HOME, SHELL 등 시스템 주요 환경 변수를 unset할 경우 명령어를 찾지 못하거나 시스템 동작에 문제가 생길 수 있으므로 주의해야 한다.
관련 명령어들
- export : 변수를 환경 변수로 설정하여 하위 프로세스에 전달한다.
- set : 쉘 옵션을 설정하거나 위치 매개변수를 표시/변경한다.
- env : 환경 변수를 출력하거나 변경된 환경에서 명령을 실행한다.
- readonly : 변수를 읽기 전용으로 설정하여 수정 및 해제를 금지한다.
- declare / typeset : 변수의 속성을 설정하고 선언한다.
https://ioerror.tistory.com/entry/UNIX-Linux-Command-Reference
UNIX & Linux Command Reference
유닉스 / 리눅스 명령어 표유닉스와 리눅스 환경에서 자주 사용되는 필수 명령어들을 완벽하게 정리한다. 서버 관리, 프로그래밍, 일상적인 시스템 운영 등 어떤 목적이든 터미널 환경을 능숙하
ioerror.tistory.com
반응형
'OS' 카테고리의 다른 글
| unshare 사용법 및 옵션 - 네임스페이스 분리로 독립된 프로세스 실행 (0) | 2026.07.31 |
|---|---|
| unsetenv 사용법 및 옵션 - C 쉘 환경 변수 해제 (0) | 2026.07.31 |
| uniq 사용법 및 옵션 - 중복 행 제거 및 집계 (0) | 2026.07.31 |
| unexpand 사용법 및 옵션 - 공백 문자를 탭 문자로 변환하는 유닉스/리눅스 명령어 (0) | 2026.07.31 |
| uncompress 사용법 및 옵션 - LZW 알고리즘으로 압축된 .Z 파일을 해제하는 명령 (0) | 2026.07.31 |
Comments