| 1 | ---
 | 
| 2 | title: OSH Table of Contents
 | 
| 3 | all_docs_url: ..
 | 
| 4 | css_files: ../../web/base.css ../../web/manual.css ../../web/ref-index.css
 | 
| 5 | preserve_anchor_case: yes
 | 
| 6 | ---
 | 
| 7 | 
 | 
| 8 | <div class="doc-ref-header">
 | 
| 9 | 
 | 
| 10 | [Oils Reference](index.html) —
 | 
| 11 | **OSH Table of Contents** | [YSH](toc-ysh.html) | [Data Notation](toc-data.html)
 | 
| 12 | 
 | 
| 13 | </div>
 | 
| 14 | 
 | 
| 15 | [OSH]($xref) is a POSIX- and [bash]($xref)-compatible shell.
 | 
| 16 | 
 | 
| 17 | <!--
 | 
| 18 | <div class="custom-toc">
 | 
| 19 | 
 | 
| 20 | [OSH Types](#type-method) <br/>
 | 
| 21 | [Builtin Commands](#builtin-cmd) <br/>
 | 
| 22 | [Front End](#front-end) <br/>
 | 
| 23 | [Command Language](#cmd-lang) <br/>
 | 
| 24 | [OSH Assignment](#osh-assign) <br/>
 | 
| 25 | [Word Language](#word-lang) <br/>
 | 
| 26 | [Mini Languages](#mini-lang) <br/>
 | 
| 27 | [Shell Options](#option) <br/>
 | 
| 28 | [Special Variables](#special-var) <br/>
 | 
| 29 | [Plugins and Hooks](#plugin) <br/>
 | 
| 30 | 
 | 
| 31 | [type-method](#type-method)  
 | 
| 32 | [builtin-cmd](#builtin-cmd)  
 | 
| 33 | [front-end](#front-end)  
 | 
| 34 | [cmd-lang](#cmd-lang)  
 | 
| 35 | [osh-assign](#osh-assign)  
 | 
| 36 | [word-lang](#word-lang)  
 | 
| 37 | [mini-lang](#mini-lang)  
 | 
| 38 | [option](#option)  
 | 
| 39 | [special-var](#special-var)  
 | 
| 40 | [plugin](#plugin)
 | 
| 41 | 
 | 
| 42 | </div>
 | 
| 43 | -->
 | 
| 44 | 
 | 
| 45 | <h2 id="type-method">
 | 
| 46 |   OSH Types <a class="group-link" href="chap-type-method.html">type-method</a>
 | 
| 47 | </h2>
 | 
| 48 | 
 | 
| 49 | ```chapter-links-type-method
 | 
| 50 |   [OSH]           BashArray   BashAssoc
 | 
| 51 | ```
 | 
| 52 | 
 | 
| 53 | <h2 id="builtin-cmd">
 | 
| 54 |   Builtin Commands <a class="group-link" href="chap-builtin-cmd.html">builtin-cmd</a>
 | 
| 55 | </h2>
 | 
| 56 | 
 | 
| 57 | ```chapter-links-builtin-cmd
 | 
| 58 |   [I/O]           read        echo      printf
 | 
| 59 |                   readarray   mapfile
 | 
| 60 |   [Run Code]      source .    eval      trap
 | 
| 61 |   [Set Options]   set         shopt
 | 
| 62 |   [Working Dir]   cd          pwd       pushd     popd         dirs
 | 
| 63 |   [Completion]    complete    compgen   compopt   compadjust   compexport
 | 
| 64 |   [Shell Process] exec      X logout 
 | 
| 65 |                   umask       ulimit    times
 | 
| 66 |   [Child Process] jobs        wait
 | 
| 67 |                   fg        X bg      X kill        X disown 
 | 
| 68 |   [External]      test [      getopts
 | 
| 69 |   [Introspection] help        hash      cmd/type    X caller
 | 
| 70 |   [Word Lookup]   command     builtin
 | 
| 71 |   [Interactive]   alias       unalias   history     X fc     X bind
 | 
| 72 | X [Unsupported]   enable
 | 
| 73 | ```
 | 
| 74 | 
 | 
| 75 | <h2 id="front-end">
 | 
| 76 |   Front End <a class="group-link" href="chap-front-end.html">front-end</a>
 | 
| 77 | </h2>
 | 
| 78 | 
 | 
| 79 | ```chapter-links-front-end
 | 
| 80 |   [Usage]         oils-usage   osh-usage             config
 | 
| 81 |                   startup      line-editing          exit-codes
 | 
| 82 |   [Lexing]        comment #    line-continuation \   ascii-whitespace [ \t\r\n]
 | 
| 83 | ```
 | 
| 84 | 
 | 
| 85 | <h2 id="cmd-lang">
 | 
| 86 |   Command Language <a class="group-link" href="chap-cmd-lang.html">cmd-lang</a>
 | 
| 87 | </h2>
 | 
| 88 | 
 | 
| 89 | ```chapter-links-cmd-lang
 | 
| 90 |   [Commands]      simple-command            semicolon ;
 | 
| 91 |   [Conditional]   case        if            dbracket [[
 | 
| 92 |                   true        false         colon :
 | 
| 93 |                   bang !      and &&        or ||
 | 
| 94 |   [Iteration]     while       until         for            for-expr-sh ((
 | 
| 95 |   [Control Flow]  break       continue      return         exit
 | 
| 96 |   [Grouping]      sh-func     sh-block {    subshell (
 | 
| 97 |   [Concurrency]   pipe |    X pipe-amp |&   ampersand &
 | 
| 98 |   [Redirects]     redir-file  >  >>  >|  <  <>   not impl: &>
 | 
| 99 |                   redir-desc  >&  <&
 | 
| 100 |                   here-doc    <<  <<-  <<<
 | 
| 101 |   [Other Command] dparen ((   time        X coproc       X select
 | 
| 102 | ```
 | 
| 103 | 
 | 
| 104 | <h2 id="osh-assign">
 | 
| 105 |   Assignments and Expressions <a class="group-link" href="chap-osh-assign.html">osh-assign</a>
 | 
| 106 | </h2>
 | 
| 107 | 
 | 
| 108 | ```chapter-links-osh-assign
 | 
| 109 |   [Literals]      sh-array      array=(a b c)   array[1]=B   "${a[@]}"
 | 
| 110 |                   sh-assoc      assoc=(['a']=1 ['b']=2)   assoc['x']=b
 | 
| 111 |   [Operators]     sh-assign     str='xyz'
 | 
| 112 |                   sh-append     str+='abc'
 | 
| 113 |   [Builtins]      local     readonly    export   unset   shift
 | 
| 114 |                   declare   typeset   X let
 | 
| 115 | ```
 | 
| 116 | 
 | 
| 117 | <h2 id="word-lang">
 | 
| 118 |   Word Language <a class="group-link" href="chap-word-lang.html">word-lang</a>
 | 
| 119 | </h2>
 | 
| 120 | 
 | 
| 121 | <!-- linkify_stop_col is 33 -->
 | 
| 122 | 
 | 
| 123 | ```chapter-links-word-lang_33
 | 
| 124 |   [Quotes]        osh-string    'abc'  $'line\n'  "$var"
 | 
| 125 |   [Substitutions] command-sub   $(command)   `command`
 | 
| 126 |                   var-sub       ${var}   $0   $9   
 | 
| 127 |                   arith-sub     $((1 + 2))
 | 
| 128 |                   tilde-sub     ~/src
 | 
| 129 |                   proc-sub      diff <(sort L.txt) <(sort R.txt)
 | 
| 130 |   [Var Ops]       op-test       ${x:-default}  
 | 
| 131 |                   op-strip      ${x%%suffix}  etc.
 | 
| 132 |                   op-replace    ${x//y/z}
 | 
| 133 |                   op-index      ${a[i+1}
 | 
| 134 |                   op-slice      ${a[@]:0:1}
 | 
| 135 |                   op-format     ${x@P}
 | 
| 136 | ```
 | 
| 137 | 
 | 
| 138 | <h2 id="mini-lang">
 | 
| 139 |   Other Mini Languages <a class="group-link" href="chap-mini-lang.html">mini-lang</a>
 | 
| 140 | </h2>
 | 
| 141 | 
 | 
| 142 | <!-- linkify_stop_col is 33 -->
 | 
| 143 | 
 | 
| 144 | ```chapter-links-mini-lang_33
 | 
| 145 |   [Arithmetic]    arith-context Where legacy arithmetic is allowed
 | 
| 146 |                   sh-numbers    0xFF  0755  etc.
 | 
| 147 |                   sh-arith      1 + 2*3   a *= 2
 | 
| 148 |                   sh-logical    !a && b
 | 
| 149 |                   sh-bitwise    ~a ^ b
 | 
| 150 |   [Boolean]       bool-expr     [[ ! $x && $y || $z ]]
 | 
| 151 |                                 test ! $x -a $y -o $z
 | 
| 152 |                   bool-infix    $a -nt $b    $x == $y
 | 
| 153 |                   bool-path     -d /etc
 | 
| 154 |                   bool-str      -n foo   -z '' 
 | 
| 155 |                   bool-other    -o errexit   -v name[index]
 | 
| 156 |   [Patterns]      glob-pat      *.py
 | 
| 157 |                   extglob       ,(*.py|*.sh)
 | 
| 158 |                   regex         [[ foo =~ [a-z]+ ]]
 | 
| 159 |   [Other Sublang] braces        {alice,bob}@example.com
 | 
| 160 |                   histsub       !$  !!  !n
 | 
| 161 |                   char-escapes  \t  \c  \x00  \u03bc
 | 
| 162 | ```
 | 
| 163 | 
 | 
| 164 | <h2 id="option">
 | 
| 165 |   Global Shell Options <a class="group-link" href="chap-option.html">option</a>
 | 
| 166 | </h2>
 | 
| 167 | 
 | 
| 168 | <!-- linkify_stop_col is 20 since we only want section links -->
 | 
| 169 | 
 | 
| 170 | ```chapter-links-option_22
 | 
| 171 |   [Errors]         nounset -u      errexit -e   inherit_errexit   pipefail
 | 
| 172 |   [Globbing]       noglob -f       nullglob     failglob        X dotglob
 | 
| 173 |                    dashglob (true)
 | 
| 174 |   [Debugging]      xtrace        X verbose    X extdebug
 | 
| 175 |   [Interactive]    emacs           vi
 | 
| 176 |   [Other POSIX]  X noclobber
 | 
| 177 |   [Compat]         eval_unsafe_arith            ignore_flags_not_impl
 | 
| 178 | ```
 | 
| 179 | 
 | 
| 180 | <h2 id="special-var">
 | 
| 181 |   Special Variables <a class="group-link" href="chap-special-var.html">special-var</a>
 | 
| 182 | </h2>
 | 
| 183 | 
 | 
| 184 | ```chapter-links-special-var
 | 
| 185 |   [POSIX Special] $@  $*  $#     $?  $-     $$  $!   $0  $9
 | 
| 186 |   [Shell Vars]    IFS             X LANG       X GLOBIGNORE
 | 
| 187 |   [Shell Options] SHELLOPTS       X BASHOPTS
 | 
| 188 |   [Other Env]     HOME              PATH
 | 
| 189 |   [Other Special] BASH_REMATCH     @PIPESTATUS
 | 
| 190 |   [Platform]      HOSTNAME          OSTYPE
 | 
| 191 |   [Call Stack]    @BASH_SOURCE     @FUNCNAME    @BASH_LINENO   
 | 
| 192 |                 X @BASH_ARGV     X @BASH_ARGC
 | 
| 193 |   [Tracing]       LINENO
 | 
| 194 |   [Process State] UID               EUID         PPID       X BASHPID
 | 
| 195 | X [Process Stack] BASH_SUBSHELL     SHLVL
 | 
| 196 | X [Shell State]   BASH_CMDS        @DIRSTACK
 | 
| 197 |   [Completion]   @COMP_WORDS        COMP_CWORD    COMP_LINE   COMP_POINT
 | 
| 198 |                   COMP_WORDBREAKS  @COMPREPLY   X COMP_KEY
 | 
| 199 |                 X COMP_TYPE         COMP_ARGV
 | 
| 200 |   [History]       HISTFILE
 | 
| 201 |   [cd]            PWD               OLDPWD      X CDPATH
 | 
| 202 |   [getopts]       OPTIND            OPTARG      X OPTERR
 | 
| 203 |   [read]          REPLY
 | 
| 204 |   [Functions]   X RANDOM            SECONDS
 | 
| 205 | ```
 | 
| 206 | 
 | 
| 207 | <h2 id="plugin">
 | 
| 208 |   Plugins and Hooks <a class="group-link" href="chap-plugin.html">plugin</a>
 | 
| 209 | </h2>
 | 
| 210 | 
 | 
| 211 | ```chapter-links-plugin
 | 
| 212 |   [Signals]       SIGTERM     SIGINT     SIGQUIT
 | 
| 213 |                   SIGTTIN     SIGTTOU    SIGWINCH
 | 
| 214 |   [Traps]         DEBUG       ERR        EXIT    X RETURN
 | 
| 215 |   [Words]         PS1       X PS2      X PS3       PS4
 | 
| 216 |   [Completion]    complete
 | 
| 217 |   [Other Plugin]  PROMPT_COMMAND       X command_not_found    
 | 
| 218 | ```
 |