CJ’s Shell, also known as cjsh, is a POSIX-oriented shell that combines a standards-focused scripting engine with a modern interactive environment.
It supports familiar Bourne shell constructs and selected Bash-style extensions while aiming to keep ordinary shell scripts portable.
Its interactive layer is built around an embedded line editor and provides multiline editing, syntax highlighting, fuzzy completion, spell correction, persistent history, configurable key bindings and richly styled prompts without requiring a separate framework or plugin collection. The project reports roughly 95% POSIX coverage, tested through more than 1,700 standards-focused tests.
This is free and open source software.
Key Features
- POSIX-oriented shell scripting engine.
- Supports if, case, for, while and shell function constructs.
- Pipelines, redirections, here documents and command substitution.
- POSIX-style parameter expansion and arithmetic evaluation.
- Selected extensions include [[ expressions ]] and arithmetic contexts.
- Brace expansion, here strings and process substitution.
- Dedicated POSIX mode rejects unsupported non-POSIX syntax and builtins.
- Foreground and background job control.
- Builtins include jobs, fg, bg, wait, disown and trap.
- Configurable handling of background jobs when the shell exits.
- Multiline command editing with automatic indentation.
- Optional absolute or relative line numbers.
- Real-time syntax highlighting for commands, keywords, paths, substitutions and errors.
- Fuzzy completion for commands, files, options, variables, users and hosts.
- Completion data learned from PATH and manual pages.
- Completion menus can display descriptions, sources and exit-status information.
- Inline completion preview and configurable hints.
- Command and filename spell correction.
- Smart cd uses fuzzy matching and frequently visited directories.
- Persistent, deduplicated command history with recorded exit statuses.
- Fuzzy forward and reverse history search.
- Interactive Bash-style history expansion.
- Customisable Emacs-inspired key bindings.
- Optional Vim-inspired navigation profile.
- Create command-driven editor widgets and custom keyboard actions.
- Mouse support for positioning the cursor and selecting menu entries.
- Typeahead buffers keystrokes entered while another command is running.
- Fish-style command abbreviations.
- BBCode-style markup for left, right and continuation prompts.
- True-colour prompt and syntax-highlight styling.
- Right prompt can follow the active cursor row.
- Configurable precmd, preexec and chpwd hooks.
- Separate environment, login, interactive and logout startup files.
- Commands generate starter configuration files with sensible defaults.
- Minimal mode disables most interactive enhancements.
- Secure mode prevents user startup files from being loaded.
- Completion, history, colours and highlighting can be disabled independently.
- Single executable with its line-editing dependency embedded.
- Primary support for Linux, macOS and Windows through WSL.
Website: github.com/CadenFinley/CJsShell
Support:
Developer: Caden Finley
License: MIT License
cjsh is written in C++ and C. Learn C++ with our recommended free books and free tutorials.
Related Software
| Shells | |
|---|---|
| zsh | Advanced and programmable command interpreter |
| Nushell | Adopts the Unix philosophy of shells where pipes connect command together |
| fish | Smart and user-friendly command line shell |
| Xonsh | Python-powered, cross-platform shell language and command prompt |
| bash | sh-compatible command language interpreter |
| Murex | Intuitive, typed and content aware shell |
| PowerShell | Cross-platform automation and configuration framework |
| Elvsh | Expressive programming language and a versatile interactive shell |
| Oils | Billed as an upgrade to bash. Written in Python. |
| DASH | POSIX-compliant implementation of sh that aims to be as small as possible |
| sh | Shell parser, formatter, and interpreter |
| tcsh | C shell with file name completion and command line editing |
| mksh | MirBSD Korn shell |
| ksh | Unix shell which was developed by David Korn at Bell Labs |
| brush | POSIX- and bash compatible shell |
| Rash | Language, library, and shell REPL for Racket. |
| ion | Modern system shell that features a simple, yet powerful, syntax |
| Yash | Yet another shell |
| oksh | Portable OpenBSD ks |
| es | Extensible shell with higher-order functio |
| dune | A shell by the beach |
| cosh | Concatenative command-line she |
| gsh | POSIX-compatible generative shell |
| arsh | Statically typed scripting language with shell-like features |
| Sushi shell | Bash clone shell implemented in Rust |
| fortsh | Shell written in Fortran |
| hsh | Slightly different take on your shell |
| ReShell | Modern shell |
| rash | Rudimentary shell |
| Dax | Custom Unix shell implementation |
Read our verdict in the software roundup.
Explore our comprehensive directory of recommended free and open source software. Our carefully curated collection spans every major software category.This directory is part of our ongoing series of informative articles for Linux enthusiasts. It features hundreds of detailed reviews, along with open source alternatives to proprietary solutions from major corporations such as Google, Microsoft, Apple, Adobe, IBM, Cisco, Oracle, and Autodesk. You’ll also find interesting projects to try, hardware coverage, free programming books and tutorials, and much more. Discovered a useful open source Linux program that we haven’t covered yet? Let us know by completing this form. |


Please read our Comment Policy before commenting.