Un-exporting an Exported Variable in Bash in Linux

Posted on In QA

How to un-export an imported variable in Bash on Linux? For example, first, I export a variable MODE like

export MODE=debug

but I want to unexport the MODE (not turn to be `””`, should be truly non-defined).

You can

export -n MODE

or

unset MODE

For your reference (from the [`bash` manual](https://www.systutorials.com/docs/linux/man/1-bash/)):

export [-fn] [name[=word]] ...
export -p
      The supplied names are marked for automatic export to the en‐
      vironment  of  subsequently executed commands.  If the -f op‐
      tion is given, the names refer to functions.  If no names are
      given,  or  if  the -p option is supplied, a list of names of
      all exported variables is printed.  The -n option causes  the
      export  property to be removed from each name.  If a variable
      name is followed by =word, the value of the variable  is  set
      to  word.   export  returns an exit status of 0 unless an in‐
      valid option is encountered, one of the names is not a  valid
      shell  variable  name,  or -f is supplied with a name that is
      not a function.
unset [-fv] [-n] [name ...]
     For each name, remove the  corresponding  variable  or
     function.  If the -v option is given, each name refers
     to a shell variable, and  that  variable  is  removed.
     Read-only variables may not be unset.  If -f is speci‐
     fied, each name refers to a shell  function,  and  the
     function  definition  is removed.  If the -n option is
     supplied, and name is  a  variable  with  the  nameref
     attribute, name will be unset rather than the variable
     it references.  -n has no effect if the -f  option  is
     supplied.   If  no  options  are  supplied,  each name
     refers to a variable; if there is no variable by  that
     name,  any  function  with  that  name is unset.  Each
     unset variable or function is removed from  the  envi‐
     ronment  passed  to  subsequent  commands.   If any of
     COMP_WORDBREAKS,  RANDOM,  SECONDS,  LINENO,  HISTCMD,
     FUNCNAME,  GROUPS,  or  DIRSTACK  are unset, they lose
     their special properties,  even  if  they  are  subse‐
     quently  reset.  The exit status is true unless a name
     is readonly.

Eric Ma

Eric is a systems guy. Eric is interested in building high-performance and scalable distributed systems and related technologies. The views or opinions expressed here are solely Eric's own and do not necessarily represent those of any third parties.

One comment

  1. export -n MODE

    See
    help export
    export: export [-fn] [name[=value] …] or export -p
    Set export attribute for shell variables.

    Marks each NAME for automatic export to the environment of subsequently
    executed commands. If VALUE is supplied, assign VALUE before exporting.

    Options:
    -f refer to shell functions
    -n remove the export property from each NAME
    -p display a list of all exported variables and functions

    An argument of `–‘ disables further option processing.

    Exit Status:
    Returns success unless an invalid option is given or NAME is invalid.

Leave a Reply

Your email address will not be published. Required fields are marked *