*** Running test-ast-formats (C (w ) (w )) (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:[...0x7fdd2258a808]) (CompoundWord parts:[(Token id:Lit_Chars length:2 col:5 line:...0x7fdd225b8100)] ) ] is_last_cmd:F ) OK test-ast-formats *** Running test-exit-builtin-interactive osh-0.26.0$ one OK test-exit-builtin-interactive *** Running test-help Oils 0.26.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' Oils 0.26.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* The command line accepted by `bin/osh` is compatible with /bin/sh and bash. osh -c 'echo hi' osh myscript.sh echo 'echo hi' | osh It also has a few enhancements: osh -n -c 'hello' # pretty-print the AST osh --ast-format text -n -c 'hello' # print it full osh accepts POSIX sh flags, with these additions: -n parse the program but don't execute it. Print the AST. --ast-format what format the AST should be in Oils 0.26.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 bin/ysh is the same as bin/osh with a the ysh:all option group set. So bin/ysh also accepts shell flags. Examples: bin/ysh -n myfile.ysh bin/ysh +o errexit -c 'false; echo ok' Oils 0.26.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* The command line accepted by `bin/osh` is compatible with /bin/sh and bash. osh -c 'echo hi' osh myscript.sh echo 'echo hi' | osh It also has a few enhancements: osh -n -c 'hello' # pretty-print the AST osh --ast-format text -n -c 'hello' # print it full osh accepts POSIX sh flags, with these additions: -n parse the program but don't execute it. Print the AST. --ast-format what format the AST should be in Oils 0.26.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' 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.26.0$ hi osh-0.26.0$ ^D osh-0.26.0$ osh-0.26.0$ ; ^ [ stdin -i ]:1: Invalid word while parsing command osh-0.26.0$ ^D osh-0.26.0$ ;echo OIL OIL ^ [ stdin -i ]:1: Invalid word while parsing command osh-0.26.0$ ^D osh-0.26.0$ osh-0.26.0$ ^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.26.0$ ^D osh-0.26.0$ ^D OK test-rc-file *** Running test-version Oils 0.26.0 https://oils.pub/ Release Date: - Arch: x86_64 OS: Linux Platform: #26~22.04.1-Ubuntu SMP Thu Jul 11 22:33:04 UTC 2024 Compiler: GCC 8.3.0 Interpreter: CPython Interpreter version: 2.7.16 Bytecode: - OK test-version test/osh-usage.sh: 9 tests passed.