Unix‎ > ‎Solaris‎ > ‎Solaris man pages‎ > ‎1‎ > ‎

runat


NAME
     runat - execute command in extended attribute name space

SYNOPSIS
     /usr/bin/runat file [command]

DESCRIPTION
     The runat utility is used to execute  shell  commands  in  a
     file's hidden attribute directory. Effectively, this utility
     changes the current  working  directory  to  be  the  hidden
     attribute  directory  associated  with the file argument and
     then executes the specified  command  in  the  bourne  shell
     (/bin/sh).  If  no command argument is provided, an interac-
     tive shell  is  spawned.  The  environment  variable  $SHELL
     defines  the  shell to be spawned. If this variable is unde-
     fined, the default shell, /bin/sh, is used.

     The file argument can be any file,  including  a  directory,
     that  can  support  extended attributes. It is not necessary
     that this file have any attributes, or be  prepared  in  any
     way, before invoking the runat command.

OPERANDS
     The following operands are supported:

     file            Any file, including a  directory,  that  can
                     support extended attributes.



     command         The command to be executed in  an  attribute
                     directory.



ERRORS
     A non-zero exit status will  be  returned  if  runat  cannot
     access the file argument, or the file argument does not sup-
     port extended attributes.

USAGE
     See fsattr(5) for a detailed description  of  extended  file
     attributes.

     The process context created by the  runat  command  has  its
     current  working  directory set to the hidden directory con-
     taining the file's extended attributes. The parent  of  this
     directory  (the  ".."  entry) always refers to the file pro-
     vided on the command line. As such, it may not be  a  direc-
     tory. Therefore, commands (such as pwd) that depend upon the
     parent entry being well-formed  (that  is,  referring  to  a
     directory) may fail.
     In the absence of the command argument, runat will  spawn  a
     new interactive shell with its current working directory set
     to be the provided file's hidden attribute directory. Notice
     that some shells (such as zsh and tcsh) are not well behaved
     when the directory parent is not a directory,  as  described
     above. These shells should not be used with runat.

EXAMPLES
     Example 1: Using runat to list extended attributes on a file

     example% runat file.1 ls -l
     example% runat file.1 ls

     Example 2: Creating extended attributes

     example% runat file.2 cp /tmp/attrdata attr.1
     example% runat file.2 cat /tmp/attrdata > attr.1

     Example 3: Copying an attribute from one file to another

     example% runat file.2 cat attr.1 | runat file.1 "cat > attr.1"

     Example 4: Using runat to spawn an interactive shell

     example% runat file.3 /bin/sh

     This spawns a new  shell  in  the  attribute  directory  for
     file.3.  Notice that the shell will not be able to determine
     what your current  directory  is.  To  leave  the  attribute
     directory, either exit the spawned shell or change directory
     (cd) using an absolute path.

     Recommended methods for performing  basic  attribute  opera-
     tions:

     display

         runat file ls [options]



     read

         runat file cat attribute



     create/modify

         runat file cp absolute-file-path attribute


     delete

         runat file rm attribute



     permission changes


         runat file chmod mode attribute
         runat file chgrp group attribute
         runat file chown owner attribute



     interactive shell


         runat file /bin/sh
          or set your $SHELL to /bin/sh and
         runat file



     The above list includes commands that are known to work with
     runat.  While  many  other  commands  may  work, there is no
     guarantee that any beyond this list will work.  Any  command
     that  relies  on being able to determine its current working
     directory is likely to fail. Examples of such commands  fol-
     low:

     Example 5: Using man in an attribute directory

     example% runat file.1 man runat
     getcwd: Not a directory

     Example 6: Spawning a tcsh shell in an attribute directory

     example% runat file.3 /usr/bin/tcsh
     tcsh: Not a directory
     tcsh: Trying to start from "/home/user"

     A new tcsh shell has been spawned with the  current  working
     directory set to the user's home directory.

     Example 7: Spawning a zsh shell in an attribute directory

     example% runat file.3 /usr/bin/zsh
     example%

     While the command appears to have worked, zsh  has  actually
     just  changed the current working directory to '/'. This can
     be seen by using /bin/pwd:

     example% /bin/pwd
     /

ENVIRONMENT VARIABLES
     SHELL           Specifies the command shell to be invoked by
                     runat.



EXIT STATUS
     The following exit values are returned:

     125      The attribute directory of the file  referenced  by
              the file argument cannot be accessed.



     126      The exec of the provided command argument failed.



     Otherwise, the exit status returned is the  exit  status  of
     the shell invoked to execute the provided command.

ATTRIBUTES
     See attributes(5) for descriptions of the  following  attri-
     butes:

     ____________________________________________________________
    |       ATTRIBUTE TYPE        |       ATTRIBUTE VALUE       |
    |_____________________________|_____________________________|
    | Availability                | SUNWcsu                     |
    |_____________________________|_____________________________|
    | CSI                         | Enabled                     |
    |_____________________________|_____________________________|
    | Interface Stability         | Evolving                    |
    |_____________________________|_____________________________|


SEE ALSO
     open(2), attributes(5), fsattr(5)

NOTES
     It is not always obvious why a command fails in  runat  when
     it is unable to determine the current working directory. The
     errors resulting can be confusing  and  ambiguous  (see  the
     tcsh and zsh examples above).




Man pages from Solaris 10 Update 8. See docs.sun.com and www.oracle.com for further documentation and Solaris information.
Comments