runat - execute command in extended attribute name space


     /usr/bin/runat file [command]


     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.


     The following operands are supported:

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

           The command to be executed in an attribute directory.


     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.


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

     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.


     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-

           runat file ls [options]

     read  runat file cat attribute

           runat file cp absolute-file-path attribute

           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-

     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

     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


     SHELL Specifies the command shell to be invoked by runat.


     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.


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

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


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


     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(1) output converted with man2html