unset - macOS


The unset command unsets a shell variable, removing its value from the current shell environment. It is particularly useful for manipulating environment variables dynamically.


unset [-f] [-v] [-n] variable...


  • -f: Unset function definitions.
  • -v: Unset variable bindings and function definitions.
  • -n: Dry run mode; do not actually unset variables, only check if they are set.


Unset a Variable

$ name=John
$ echo $name
$ unset name
$ echo $name

Unset a Function

$ myfunc() { echo "Hello"; }
$ unset -f myfunc
$ myfunc
zsh: command not found: myfunc

Check If a Variable Is Set

$ name=John
$ unset -n name
$ echo $?
0  # Variable is set

Common Issues

Variable Not Removed

  • Ensure you are using the unset command correctly.
  • Check if the variable has been set as a readonly variable.

Errors When Unsetting Built-in Functions

  • Built-in functions cannot be unset with unset -f.


  • Integrate unset with export to modify the environment variables passed to a command.
  • Use unset in scripts to dynamically manage environment settings.
  • env: Prints the current environment variables.
  • set: Sets or displays shell variables.
  • declare: Declares shell variables and sets their properties.