# exec

## PROLOG



           This manual page is part of the POSIX Programmer's Manual.  The
           Linux implementation of this interface may differ (consult the
           corresponding Linux manual page for details of Linux behavior), or
           the interface may not be implemented on Linux.
    


## NAME



           exec — execute commands and open, close, or copy file descriptors
    


## SYNOPSIS



           exec **[**_command_ **[**_argument_...**]]**
    


## DESCRIPTION



           The _exec_ utility shall open, close, and/or copy file descriptors
           as specified by any redirections as part of the command.
    
           If _exec_ is specified without _command_ or _argument_ s, and any file
           descriptors with numbers greater than 2 are opened with associated
           redirection statements, it is unspecified whether those file
           descriptors remain open when the shell invokes another utility.
           Scripts concerned that child shells could misuse open file
           descriptors can always close them explicitly, as shown in one of
           the following examples.
    
           If _exec_ is specified with _command_ , it shall replace the shell with
           _command_ without creating a new process. If _argument_ s are
           specified, they shall be arguments to _command_.  Redirection
           affects the current shell execution environment.
    


## OPTIONS



           None.
    


## OPERANDS



           See the DESCRIPTION.
    


## STDIN



           Not used.
    


## INPUT FILES



           None.
    


## ENVIRONMENT VARIABLES



           None.
    


## ASYNCHRONOUS EVENTS



           Default.
    


## STDOUT



           Not used.
    


## STDERR



           The standard error shall be used only for diagnostic messages.
    


## OUTPUT FILES



           None.
    


## EXTENDED DESCRIPTION



           None.
    


## EXIT STATUS



           If _command_ is specified, _exec_ shall not return to the shell;
           rather, the exit status of the process shall be the exit status of
           the program implementing _command_ , which overlaid the shell. If
           _command_ is not found, the exit status shall be 127. If _command_ is
           found, but it is not an executable utility, the exit status shall
           be 126. If a redirection error occurs (see _Section 2.8.1_ ,
           _Consequences of Shell Errors_), the shell shall exit with a value
           in the range 1-125. Otherwise, _exec_ shall return a zero exit
           status.
    


## CONSEQUENCES OF ERRORS



           Default.
    
           _The following sections are informative._
    


## APPLICATION USAGE



           None.
    


## EXAMPLES



           Open _readfile_ as file descriptor 3 for reading:
    
               exec 3< readfile
    
           Open _writefile_ as file descriptor 4 for writing:
    
               exec 4> writefile
    
           Make file descriptor 5 a copy of file descriptor 0:
    
               exec 5<&0
    
           Close file descriptor 3:
    
               exec 3<&-
    
           Cat the file **maggie** by replacing the current shell with the _cat_
           utility:
    
               exec cat maggie
    


## RATIONALE



           Most historical implementations were not conformant in that:
    
               foo=bar exec cmd
    
           did not pass **foo** to **cmd**.
    


## FUTURE DIRECTIONS



           None.
    


* * *