*** Running test-ast-formats (C (w <Lit_Chars echo>) (w <Lit_Chars hi>)) (command.Simple blame_tok:(Token id:Lit_Chars length:4 col:0 line:(SourceLine line_num:1 content:"echo hi" src:(source.CFlag)) ) more_env:[] words:[ (CompoundWord parts:[...0x7f6218597600]) (CompoundWord parts:[(Token id:Lit_Chars length:2 col:5 line:...0x7f62185ad418)] ) ] is_last_cmd:F ) OK test-ast-formats *** Running test-exit-builtin-interactive osh-0.27$ one OK test-exit-builtin-interactive *** Running test-help Oils 0.27.0 https://oils.pub/ ~~~ oils-usage ~~~ bin/oils-for-unix is an executable that contains OSH, YSH, and more. Usage: oils-for-unix MAIN_NAME ARG* MAIN_NAME ARG* It behaves like busybox. The command name can be passed as the first argument: oils-for-unix ysh -c 'echo hi' More commonly, it's invoked through a symlink like 'ysh', which causes it to behave like that command: ysh -c 'echo hi' ~~~ shell-flags ~~~ osh and ysh accept standard POSIX shell flags, like: bin/osh -o errexit -c 'false' bin/ysh -n myfile.ysh bin/ysh +o errexit -c 'false; echo ok' They also accept these flags: -n Parse the program but don't execute it. Print the AST. --ast-format FMT The format for the AST (text|text-abbrev) --eval FILE Evaluate the given file, similar to the 'source' builtin. Specify it multiple times to run multiple files. The shell stops on normal errors, as well as when $? is non-zero after evaluating a file (even if errexit is off). --tool Run a tool instead of the shell (cat-em|syntax-tree) Examples: osh -n -c 'hello' # pretty-print the AST ysh --ast-format text -n -c 'hello' # print it full Oils 0.27.0 https://oils.pub/ ~~~ osh-usage ~~~ bin/osh is compatible with POSIX shell, bash, and other shells. Usage: osh FLAG* SCRIPT ARG* osh FLAG* -c COMMAND ARG* osh FLAG* Examples: osh -c 'echo hi' osh myscript.sh echo 'echo hi' | osh ~~~ shell-flags ~~~ osh and ysh accept standard POSIX shell flags, like: bin/osh -o errexit -c 'false' bin/ysh -n myfile.ysh bin/ysh +o errexit -c 'false; echo ok' They also accept these flags: -n Parse the program but don't execute it. Print the AST. --ast-format FMT The format for the AST (text|text-abbrev) --eval FILE Evaluate the given file, similar to the 'source' builtin. Specify it multiple times to run multiple files. The shell stops on normal errors, as well as when $? is non-zero after evaluating a file (even if errexit is off). --tool Run a tool instead of the shell (cat-em|syntax-tree) Examples: osh -n -c 'hello' # pretty-print the AST ysh --ast-format text -n -c 'hello' # print it full Oils 0.27.0 https://oils.pub/ ~~~ ysh-usage ~~~ bin/ysh is the shell with data tYpes, influenced by pYthon, JavaScript, ... Usage: ysh FLAG* SCRIPT ARG* ysh FLAG* -c COMMAND ARG* ysh FLAG* Examples: ysh -c 'echo hi' ysh myscript.ysh echo 'echo hi' | ysh Note that bin/ysh is the same as bin/osh with the ysh:all option group set: osh -o ysh:all -c 'echo hi' # Same as YSH ~~~ shell-flags ~~~ osh and ysh accept standard POSIX shell flags, like: bin/osh -o errexit -c 'false' bin/ysh -n myfile.ysh bin/ysh +o errexit -c 'false; echo ok' They also accept these flags: -n Parse the program but don't execute it. Print the AST. --ast-format FMT The format for the AST (text|text-abbrev) --eval FILE Evaluate the given file, similar to the 'source' builtin. Specify it multiple times to run multiple files. The shell stops on normal errors, as well as when $? is non-zero after evaluating a file (even if errexit is off). --tool Run a tool instead of the shell (cat-em|syntax-tree) Examples: osh -n -c 'hello' # pretty-print the AST ysh --ast-format text -n -c 'hello' # print it full Oils 0.27.0 https://oils.pub/ ~~~ osh-usage ~~~ bin/osh is compatible with POSIX shell, bash, and other shells. Usage: osh FLAG* SCRIPT ARG* osh FLAG* -c COMMAND ARG* osh FLAG* Examples: osh -c 'echo hi' osh myscript.sh echo 'echo hi' | osh ~~~ shell-flags ~~~ osh and ysh accept standard POSIX shell flags, like: bin/osh -o errexit -c 'false' bin/ysh -n myfile.ysh bin/ysh +o errexit -c 'false; echo ok' They also accept these flags: -n Parse the program but don't execute it. Print the AST. --ast-format FMT The format for the AST (text|text-abbrev) --eval FILE Evaluate the given file, similar to the 'source' builtin. Specify it multiple times to run multiple files. The shell stops on normal errors, as well as when $? is non-zero after evaluating a file (even if errexit is off). --tool Run a tool instead of the shell (cat-em|syntax-tree) Examples: osh -n -c 'hello' # pretty-print the AST ysh --ast-format text -n -c 'hello' # print it full Oils 0.27.0 https://oils.pub/ ~~~ oils-usage ~~~ bin/oils-for-unix is an executable that contains OSH, YSH, and more. Usage: oils-for-unix MAIN_NAME ARG* MAIN_NAME ARG* It behaves like busybox. The command name can be passed as the first argument: oils-for-unix ysh -c 'echo hi' More commonly, it's invoked through a symlink like 'ysh', which causes it to behave like that command: ysh -c 'echo hi' ~~~ shell-flags ~~~ osh and ysh accept standard POSIX shell flags, like: bin/osh -o errexit -c 'false' bin/ysh -n myfile.ysh bin/ysh +o errexit -c 'false; echo ok' They also accept these flags: -n Parse the program but don't execute it. Print the AST. --ast-format FMT The format for the AST (text|text-abbrev) --eval FILE Evaluate the given file, similar to the 'source' builtin. Specify it multiple times to run multiple files. The shell stops on normal errors, as well as when $? is non-zero after evaluating a file (even if errexit is off). --tool Run a tool instead of the shell (cat-em|syntax-tree) Examples: osh -n -c 'hello' # pretty-print the AST ysh --ast-format text -n -c 'hello' # print it full OK test-help *** Running test-noexec-fails-properly echo; echo; | ^ [ -c flag ]:1: Invalid word while parsing command _tmp/osh-usage-noexec.txt appears empty, as expected OK test-noexec-fails-properly *** Running test-osh-file ===== Hello hi inside func in subshell another ComSub ===== EMPTY ===== NO TRAILING NEWLINE hi OK test-osh-file *** Running test-osh-interactive osh-0.27$ hi osh-0.27$ ^D osh-0.27$ osh-0.27$ ; ^ [ stdin -i ]:1: Invalid word while parsing command osh-0.27$ ^D osh-0.27$ ;echo OIL OIL ^ [ stdin -i ]:1: Invalid word while parsing command osh-0.27$ ^D osh-0.27$ osh-0.27$ ^D OK test-osh-interactive *** Running test-osh-stdin hi inside func in subshell another ComSub ===== EMPTY ===== NO TRAILING NEWLINE hi hi line continuation two here doc command sub OK test-osh-stdin *** Running test-rc-file TESTRC$ ^D osh-0.27$ ^D osh-0.27$ ^D OK test-rc-file *** Running test-version Oils 0.27.0 https://oils.pub/ Release Date: - Arch: x86_64 OS: Linux Platform: #25~22.04.1-Ubuntu SMP Thu Jan 16 21:37:09 UTC 2025 Compiler: GCC 8.3.0 Interpreter: CPython Interpreter version: 2.7.16 Bytecode: - OK test-version test/osh-usage.sh: 9 tests passed.