*** Running test-ast-formats (command.Simple blame_tok: more_env: [] words: [{} {}] is_last_cmd: F ) (command.Simple blame_tok: (Token id:Id.Lit_Chars length:4 col:0 line:(SourceLine line_num:1 content:"echo hi" src:(source__CFlag))) more_env: [] words: [ (CompoundWord parts:[...0x7f5587c542f0]) (CompoundWord parts:[(Token id:Id.Lit_Chars length:2 col:5 line:...0x7f5587ad20b0)]) ] is_last_cmd: F ) oil AST
(command.Simple
  blame_tok: <Id.Lit_Chars echo>
  more_env: []
  words: [{<Id.Lit_Chars echo>} {<Id.Lit_Chars hi>}]
  is_last_cmd: F
)
    
oil AST
(command.Simple
  blame_tok: (Token id:Id.Lit_Chars length:4 col:0 line:(SourceLine line_num:1 content:"echo hi" src:(source__CFlag)))
  more_env: []
  words: [
    (CompoundWord parts:[...0x7fc07e8e82f0])
    (CompoundWord parts:[(Token id:Id.Lit_Chars length:2 col:5 line:...0x7fc07e75d0b0)])
  ]
  is_last_cmd: F
)
    
OK test-ast-formats *** Running test-exit-builtin-interactive [osh] hoover ~/git/oilshell/oil$ one OK test-exit-builtin-interactive *** Running test-help Oils 0.23.0 https://www.oilshell.org/ ~~~ 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.23.0 https://www.oilshell.org/ ~~~ 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.23.0 https://www.oilshell.org/ ~~~ 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* `bin/ysh` is the same as `bin/osh` with a the `ysh:all` option group set. So `bin/ysh` also accepts shell flags. ysh -c 'echo hi' ysh myscript.ysh echo 'echo hi' | ysh Oils 0.23.0 https://www.oilshell.org/ ~~~ 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.23.0 https://www.oilshell.org/ ~~~ 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] hoover ~/git/oilshell/oil$ hi [osh] hoover ~/git/oilshell/oil$ ^D [osh] hoover ~/git/oilshell/oil$ [osh] hoover ~/git/oilshell/oil$ ; ^ [ stdin -i ]:1: Invalid word while parsing command [osh] hoover ~/git/oilshell/oil$ ^D [osh] hoover ~/git/oilshell/oil$ ;echo OIL OIL ^ [ stdin -i ]:1: Invalid word while parsing command [osh] hoover ~/git/oilshell/oil$ ^D [osh] hoover ~/git/oilshell/oil$ [osh] hoover ~/git/oilshell/oil$ ^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.23.0$ ^D osh-0.23.0$ ^D OK test-rc-file *** Running test-version Oils 0.23.0 https://www.oilshell.org/ Release Date: - Arch: x86_64 OS: Linux Platform: #1 SMP PREEMPT_DYNAMIC Debian 6.1.27-1 (2023-05-08) Compiler: GCC 12.2.0 Interpreter: CPython Interpreter version: 2.7.18 Bytecode: - OK test-version test/osh-usage.sh: 9 tests passed.