The osh utility is a bash(1)-compatible command language interpreter: it reads commands either from standard input, a script file or command-line arguments and executes them.
osh accepts POSIX sh(1) arguments, with the following differences:
-n
Only validate the syntax. Also prints the AST.
--ast-format
What format the AST should be in.
ENVIRONMENT
OILS_HIJACK_SHEBANG
OILS_CRASH_DUMP_DIR
FILES
The interactive shell only sources ~/.config/oils/oshrc on startup.
EXIT STATUS
The osh utility exits with one of the following values:
1
One or more runtime errors occurred.
2
One or more parsing errors occurred, either due to incorrect script syntax or improper invocation of a shell builtin.
126
Permission was denied when running a command.
127
The referenced command or script could not be found.
--ast-format since Arch Linux 2026-11-01;
-n since Debian 12 (Bookworm).
--absname until Debian 13 (Trixie);
--all-dependencies until Debian 13 (Trixie);
--configure until Debian 13 (Trixie);
--depend until Debian 13 (Trixie);
--dotomake until Debian 13 (Trixie);
--flush-includes until Debian 13 (Trixie);
--force-dotomake until Debian 13 (Trixie);
--help until Debian 13 (Trixie);
--help-all until Debian 13 (Trixie);
--help-debug until Debian 13 (Trixie);
--install until Debian 13 (Trixie);
--install-all until Debian 13 (Trixie);
--install-force until Debian 13 (Trixie);
--output-at-end until Debian 13 (Trixie);
--output-normal until Debian 13 (Trixie);
--output-only-errors until Debian 13 (Trixie);
--output-postpone until Debian 13 (Trixie);
--print-dependencies until Debian 13 (Trixie);
--print-exit until Debian 13 (Trixie);
--print-status until Debian 13 (Trixie);
--progress until Debian 13 (Trixie);
--project until Debian 13 (Trixie);
--save-interval until Debian 13 (Trixie);
--server until Debian 13 (Trixie);
--shell until Debian 13 (Trixie);
--show-dependencies until Debian 13 (Trixie);
--verbose until Debian 13 (Trixie);
--verbose-dependencies until Debian 13 (Trixie);
--version until Debian 13 (Trixie);
-P until Debian 13 (Trixie);
-R until Debian 13 (Trixie);
-S until Debian 13 (Trixie);
-U until Debian 13 (Trixie);
-Wdeclare until Debian 13 (Trixie);
-allow-exceptions until Debian 13 (Trixie);
-c until Debian 13 (Trixie);
-debug-active-rules until Debian 13 (Trixie);
-debug-ast-lex until Debian 13 (Trixie);
-debug-build until Debian 13 (Trixie);
-debug-cache until Debian 13 (Trixie);
-debug-db until Debian 13 (Trixie);
-debug-deps until Debian 13 (Trixie);
-debug-eval until Debian 13 (Trixie);
-debug-exec until Debian 13 (Trixie);
-debug-hash until Debian 13 (Trixie);
-debug-implicit until Debian 13 (Trixie);
-debug-lex until Debian 13 (Trixie);
-debug-lexgen until Debian 13 (Trixie);
-debug-notify until Debian 13 (Trixie);
-debug-parse until Debian 13 (Trixie);
-debug-parsegen until Debian 13 (Trixie);
-debug-parsing until Debian 13 (Trixie);
-debug-pos until Debian 13 (Trixie);
-debug-remote until Debian 13 (Trixie);
-debug-rule until Debian 13 (Trixie);
-debug-scanner until Debian 13 (Trixie);
-debug-shell until Debian 13 (Trixie);
-debug-thread until Debian 13 (Trixie);
-extended-rusage until Debian 13 (Trixie);
-i until Debian 13 (Trixie);
-instrument until Debian 13 (Trixie);
-j until Debian 13 (Trixie);
-k until Debian 13 (Trixie);
-o until Debian 13 (Trixie);
-p until Debian 13 (Trixie);
-print-ast until Debian 13 (Trixie);
-print-files until Debian 13 (Trixie);
-print-ir until Debian 13 (Trixie);
-print-loc until Debian 13 (Trixie);
-print-rules until Debian 13 (Trixie);
-s until Debian 13 (Trixie);
-t until Debian 13 (Trixie);
-trace-pos until Debian 13 (Trixie);
-w until Debian 13 (Trixie);
-warn-error until Debian 13 (Trixie).