nash


NASH(8)                                                                NASH(8)




NAME

       nash - script interpretor to interpret linuxrc images


SYNOPSIS

       nash [--quiet] [--force] script



DESCRIPTION

       nash  is  a  very  simple script interpretor designed to be as small as
       possible. It is primarily designed to run simple linuxrc scripts on  an
       initrd image. Arguments to commands may be enclosed in either single or
       double quotes to allow spaces to be included in the  arguments.  Spaces
       outside  of  quotations  always  delineate  arguments, and so backslash
       escaping is supported.

       Additionally, if nash is invoked as modprobe, it will immediately  exit
       with  a  return code of zero. This is to allow initrd's to prevent some
       extraneous kernel error messages during startup.

       There are two types of commands, built in and external.  External  com-
       mands  are  run from the filesystem via execve(). If commands names are
       given without a path, nash will search  it's  builtin  PATH,  which  is
       /usr/bin, /bin, /sbin, /usr/sbin.

       Currently, nash supports the following built in commands.


       access -[r][w][x][f] path
              Tells  whether  the  current  user has sufficient permissions to
              read, write, or execture  path,  or  if  the  file  exists  (see
              access(2) for more information).


       echo [item]* [> filename]
              Echos  the text strings given to a file, with a space in between
              each item. The output may be optionally redirected to a file.

              exec <command> The command given is execed, overlaying the  nash
              process.


       find dir -name name
              Display  the path to files named name in or below directory dir.
              This is a very limited implementation of find(1).


       findlodev
              Prints the full path to the first unused loopback  block  device
              on the system. If none is available, no output is displayed.


       losetup /dev/loopdev file
              Binds  file  to the loopback device /dev/loopdev. See losetup(8)
              for information on loopback devices.


       mkdevices path
              Creates device files for all of  the  block  devices  listed  in
              /proc/partitions in the directory specfied by path.


       mkdir [-p] path
              Creates  the  directory  path.  If -p is specified, this command
              will not complain if the directory exists. Note this is a subset
              of the standard mkdir -p behavior.


       mknod path [c|b] major minor
              Creates  a  device inode for path. This is identical to mkdev(1)
              which the exceptions that it will not create named pipes and  if
              the  directories in path do not exist they will be automatically
              created.


       mkdmnod
              Creates a device inode for the device mapper  control  inode  as
              /dev/mapper/control.   If  it  already  exists  with the correct
              major/minor, it will not be recreated.


       mkrootdev path
              Makes path a block inode for the device which should be  mounted
              as root. To determine this device nash uses the device suggested
              by the root= kernel command line argument (if root=LABEL is used
              devices  are  probed  to  find one with that label). If no root=
              argument is available,  /proc/sys/kernel/real-root-dev  provides
              the device number.


       mount [--ro] -o opts -t type device mntpoint
              Mounts  a  filesystem.  It  does not support NFS, and it must be
              used in the form given above  (arguments  must  go  first).   If
              device   is   of  the  form  LABEL=foo  the  devices  listed  in
              /fB/proc/partitions will be searched, and the first device  with
              a  volume  label of foo will be mounted. Normal mount(2) options
              are supported, and --ro will mount the filesystem read only  for
              compatibility  with  older versions of nash.  The defaults mount
              option is silently ignored.


       pivot_root newrootpath oldrootpath
              Makes  the  filesystem  mounted  at  newrootpath  the  new  root
              filesystem,  and  mounts the current root filesystem as oldroot-
              path.


       readlink path
              Displays the value of the symbolic link path.


       raidautorun mddevice
              Runs raid autodetection on all raid-typed  partitions.  mddevice
              must be a raid device (any will do).


       setquiet
              Cause any later echos in this script to not be displayed.


       showlabels
              Display  a  table of devices, their filesystem labels, and their
              uuids.


       sleep num
              Sleep for num seconds


       switchroot newrootpath
              Makes  the  filesystem  mounted  at  newrootpath  the  new  root
              filesystem by moving the mountpoint.  This will only work in 2.6
              or later kernels.


       umount path
              Unmounts the filesystem mounted at path.



RETURN VALUE

       Returns 0 is the last command succeeded or 1 if it failed.



OPTIONS

       --force
              Allows force really execute the script, even though nash doesn't
              appear to be running from an initrd image.



BUGS

       Probably  many.  nash is not a shell, and it shouldn't be thought of as
       one. It isn't entirely different from a shell,  but  that's  mostly  by
       accident.



AUTHOR

       Erik Troan <ewt@redhat.com>



                                Mon Aug 02 2004                        NASH(8)