ioerror

unset 사용법 및 옵션 - 쉘 변수 및 함수 제거 명령어 본문

OS

unset 사용법 및 옵션 - 쉘 변수 및 함수 제거 명령어

반응형

 

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

 

 

반응형
Comments