1 | ---
|
2 | title: YSH and OSH Topics by Feature
|
3 | all_docs_url: ..
|
4 | default_highlighter: oils-sh
|
5 | preserve_anchor_case: yes
|
6 | ---
|
7 |
|
8 | YSH and OSH Topics by Feature
|
9 | ====
|
10 |
|
11 | <span class="in-progress">(in progress)</span>
|
12 |
|
13 | This page links to topics in the [Oils Reference](index.html). It's organized
|
14 | differently than the [YSH Table of Contents](toc-ysh.html) or [OSH Table of
|
15 | Contents](toc-osh.html).
|
16 |
|
17 | <div id="toc">
|
18 | </div>
|
19 |
|
20 | ## Where YSH Improves on OSH
|
21 |
|
22 | ### Errors
|
23 |
|
24 | YSH:
|
25 |
|
26 | - [`try`](chap-builtin-cmd.html#try)
|
27 | - [`_error`](chap-special-var.html#_error)
|
28 | - multiple processes
|
29 | - [`_pipeline_status`](chap-special-var.html#_pipeline_status)
|
30 | - [`_process_sub_status`](chap-special-var.html#_process_sub_status)
|
31 | - [Options](chap-option.html):
|
32 | - `strict_errexit`, `command_sub_errexit`, ...
|
33 |
|
34 | OSH:
|
35 |
|
36 | - [`$?`](chap-special-var.html#POSIX-special) - not idiomatic in YSH
|
37 | - [Options](chap-option.html):
|
38 | - `errexit`, `pipefail`, `inherit_errexit`
|
39 |
|
40 | ### Environment Variables
|
41 |
|
42 | YSH:
|
43 |
|
44 | - [`ENV`][ENV]
|
45 | - [`ysh-prefix-binding`][ysh-prefix-binding] - for `NAME=val` env bindings
|
46 | - [`simple-command`][simple-command] - external commands are started with an
|
47 | `environ`
|
48 | - [Options](chap-option.html):
|
49 | - `shopt --unset no_exported`
|
50 | - `shopt --set env_obj`
|
51 |
|
52 | [ENV]: chap-special-var.html#ENV
|
53 |
|
54 | <!--
|
55 | TODO: should we have a `envFromDict()` function that goes with `env -i`?
|
56 | -->
|
57 |
|
58 | OSH:
|
59 |
|
60 | - [`export`](chap-osh-assign.html#export)
|
61 | - [`prefix-binding`][prefix-binding] - for `NAME=val` env bindings
|
62 |
|
63 | [prefix-binding]: chap-cmd-lang.html#prefix-binding
|
64 | [ysh-prefix-binding]: chap-cmd-lang.html#ysh-prefix-binding
|
65 |
|
66 | [simple-command]: chap-cmd-lang.html#simple-command
|
67 |
|
68 |
|
69 | ### I/O
|
70 |
|
71 | YSH:
|
72 |
|
73 | - [`write`](chap-builtin-cmd.html#write)
|
74 | - [`ysh-echo`](chap-builtin-cmd.html#ysh-echo) is a shortcut for `write`
|
75 | - [`ysh-read`](chap-builtin-cmd.html#ysh-read) - `read --all`, etc.
|
76 | - [`redir`](chap-builtin-cmd.html#redir)
|
77 | - The [`io`](chap-type-method.html#io) object
|
78 |
|
79 | OSH:
|
80 |
|
81 | - [`printf`](chap-builtin-cmd.html#printf)
|
82 |
|
83 | ### Procs
|
84 |
|
85 | YSH:
|
86 |
|
87 | - [`proc`](chap-ysh-cmd.html#proc)
|
88 | - Invokable objects: [`__invoke__`][__invoke__], [`Obj`][Obj]
|
89 | - [`simple-command`][simple-command] is how you invoke procs
|
90 |
|
91 | OSH:
|
92 |
|
93 | - [`sh-func`](chap-cmd-lang.html#sh-func)
|
94 |
|
95 | ### Modules
|
96 |
|
97 | - [`use`](chap-builtin-cmd.html#use)
|
98 | - [`is-main`](chap-builtin-cmd.html#is-main)
|
99 | - provide (TODO)
|
100 | - [`__provide__`](chap-special-var.html#__provide__)
|
101 | - An imported module is an [`Obj`][Obj] with an [`__invoke__`][__invoke__]
|
102 | method
|
103 |
|
104 | [Obj]: chap-type-method.html#Obj
|
105 | [__invoke__]: chap-type-method.html#__invoke__
|
106 |
|
107 | OSH:
|
108 |
|
109 | - [`source`](chap-builtin-cmd.html#source)
|
110 | - [`source-guard`](chap-builtin-cmd.html#source-guard)
|
111 |
|
112 | ### Interactive Shell
|
113 |
|
114 | - [`renderPrompt()`](chap-plugin.html#renderPrompt)
|
115 |
|
116 | OSH:
|
117 |
|
118 | - [`complete`][complete]
|
119 | - Oils enhancements: [`compexport`][compexport], [`compadjust`][compadjust]
|
120 |
|
121 | [complete]: chap-builtin-cmd.html#complete
|
122 | [compadjust]: chap-builtin-cmd.html#compadjust
|
123 | [compexport]: chap-builtin-cmd.html#compexport
|
124 |
|
125 | ### Tracing
|
126 |
|
127 | - `set -x` aka `set -o xtrace`
|
128 | - [PS4][]
|
129 | - `SHX_*`
|
130 |
|
131 | [PS4]: chap-plugin.html#PS4
|
132 |
|
133 | ### Unicode
|
134 |
|
135 | - TODO: which functions respect Unicode?
|
136 |
|
137 | Also see [the Unicode doc](../unicode.html).
|
138 |
|
139 |
|
140 | ## YSH Only
|
141 |
|
142 | ### Objects
|
143 |
|
144 | - [`Obj`][Obj]
|
145 | - `__invoke__` and `__call__`
|
146 | - `propView()` and `prototype()` - may be renamed `first() rest()`
|
147 | - [`ENV`][ENV] is an `Obj`
|
148 | - operator `.` [ysh-attr](chap-expr-lang.html#ysh-attr)
|
149 | - operator `->` [thin-arrow](chap-expr-lang.html#thin-arrow)
|
150 |
|
151 | ### Closures
|
152 |
|
153 | - [block-arg](chap-cmd-lang.html#block-arg)
|
154 | - Maybe: proc, func
|
155 |
|
156 | ### Funcs
|
157 |
|
158 | - [`func`](chap-ysh-cmd.html#func)
|
159 | - Callable objects: [`__call__`][__call__] and [`Obj`][Obj] (TODO)
|
160 | - [`ysh-func-call`](chap-expr-lang.html#ysh-func-call)
|
161 |
|
162 | [__call__]: chap-type-method.html#__call__
|
163 |
|
164 | ### Reflection
|
165 |
|
166 | - The [`io`][io] object has `eval()` methods, etc.
|
167 | - The [`vm`][vm] object for inspecting interpreter structures
|
168 |
|
169 | [io]: chap-type-method.html#io
|
170 | [vm]: chap-type-method.html#vm
|