sh(1) - command interpreter (shell)
-a allexport     Export all variables assigned to.
-c               Read commands from the command_string operand instead of from the standard input.
                 Special parameter 0 will be set from the command_name operand and the positional
                 parameters ($1, $2, etc.)  set from the remaining argument operands.
-C noclobber     Don't overwrite existing files with “>”.
-e errexit       If not interactive, exit immediately if any untested command fails.  The exit status
                 of a command is considered to be explicitly tested if the command is used to control
                 an if, elif, while, or until; or if the command is the left hand operand of an “&&”
                 or “||” operator.
-f noglob        Disable pathname expansion.
-n noexec        If not interactive, read commands but do not execute them.  This is useful for
                 checking the syntax of shell scripts.
-u nounset       Write a message to standard error when attempting to expand a variable that is not
                 set, and if the shell is not interactive, exit immediately.
-v verbose       The shell writes its input to standard error as it is read.  Useful for debugging.
-x xtrace        Write each command to standard error (preceded by a ‘+ ’) before it is executed.
                 Useful for debugging.
-I ignoreeof     Ignore EOF's from input when interactive.
-i interactive   Force the shell to behave interactively.
-l               Make dash act as if it had been invoked as a login shell.
-m monitor       Turn on job control (set automatically when interactive).
-s stdin         Read commands from standard input (set automatically if no file arguments are
                 present).  This option has no effect when set after the shell has already started
                 running (i.e. with set).
-V vi            Enable the built-in vi(1) command line editor (disables -E if it has been set).
-E emacs         Enable the built-in emacs(1) command line editor (disables -V if it has been set).
-b notify        Enable asynchronous notification of background job completion.  (UNIMPLEMENTED for
                 4.4alpha)
-p     search for command using a PATH that guarantees to find all the standard utilities.
-V     Do not execute the command but search for the command and print the resolution of the command
       search.  This is the same as the type builtin.
-v     Do not execute the command but search for the command and print the absolute pathname of
       utilities, the name for builtins or the expansion of aliases.
-e editor
       Use the editor named by editor to edit the commands.  The editor string is a command name,
       subject to search via the PATH variable.  The value in the FCEDIT variable is used as a
       default when -e is not specified.  If FCEDIT is null or unset, the value of the EDITOR
       variable is used.  If EDITOR is null or unset, ed(1) is used as the editor.
-l (ell)
       List the commands rather than invoking an editor on them.  The commands are written in the
       sequence indicated by the first and last operands, as affected by -r, with each command
       preceded by the command number.
-n     Suppress command numbers when listing with -l.
-r     Reverse the order of the commands listed (with -l) or edited (with neither -l nor -s).
-s     Re-execute the command without invoking an editor.

first

last   Select the commands to list or edit.  The number of previous commands that can be accessed
       are determined by the value of the HISTSIZE variable.  The value of first or last or both are
       one of the following:

       [+]number
              A positive number representing a command number; command numbers can be displayed with
              the -l option.
-number
       A negative decimal number representing the command that was executed number of
       commands previously.  For example, -1 is the immediately previous command.
-b file       True if file exists and is a block special file.
-c file       True if file exists and is a character special file.
-d file       True if file exists and is a directory.
-e file       True if file exists (regardless of type).
-f file       True if file exists and is a regular file.
-g file       True if file exists and its set group ID flag is set.
-h file       True if file exists and is a symbolic link.
-k file       True if file exists and its sticky bit is set.
-n string     True if the length of string is nonzero.
-p file       True if file is a named pipe (FIFO).
-r file       True if file exists and is readable.
-s file       True if file exists and has a size greater than zero.
-t file_descriptor
              True if the file whose file descriptor number is file_descriptor is open and is
              associated with a terminal.
-u file       True if file exists and its set user ID flag is set.
-w file       True if file exists and is writable.  True indicates only that the write flag is on.
              The file is not writable on a read-only file system even if this test indicates true.
-x file       True if file exists and is executable.  True indicates only that the execute flag is
              on.  If file is a directory, true indicates that file can be searched.
-z string     True if the length of string is zero.
-L file       True if file exists and is a symbolic link.  This operator is retained for
              compatibility with previous versions of this program.  Do not rely on its existence;
              use -h instead.
-O file       True if file exists and its owner matches the effective user id of this process.
-G file       True if file exists and its group matches the effective group id of this process.
-S file       True if file exists and is a socket.

file1 -nt file2
              True if file1 and file2 exist and file1 is newer than file2.

file1 -ot file2
              True if file1 and file2 exist and file1 is older than file2.

file1 -ef file2
              True if file1 and file2 exist and refer to the same file.

string        True if string is not the null string.
s1 = s2       True if the strings s1 and s2 are identical.
-H          set or inquire about hard limits
-S          set or inquire about soft limits.  If neither -H nor -S is specified, the soft limit is
            displayed or both limits are set.  If both are specified, the last one wins.

The limit to be interrogated or set, then, is chosen by specifying any one of these flags:
-a          show all the current limits
-t          show or set the limit on CPU time (in seconds)
-f          show or set the limit on the largest file that can be created (in 512-byte blocks)
-d          show or set the limit on the data segment size of a process (in kilobytes)
-s          show or set the limit on the stack size of a process (in kilobytes)
-c          show or set the limit on the largest core dump size that can be produced (in 512-byte
            blocks)
-m          show or set the limit on the total physical memory that can be in use by a process (in
            kilobytes)
-l          show or set the limit on how much memory a process can lock with mlock(2) (in kilobytes)
-p          show or set the limit on the number of processes this user can have at one time
-n          show or set the limit on the number files a process can have open at once