POSIX-first scripting with a modern interactive shell experience
cjsh is a POSIX-first shell with an enhanced interactive layer. It combines standards-oriented scripting behavior with modern shell features such as rich completions, customizable keybindings, syntax highlighting, multiline editing, prompt styling, spell correction, and history search.
The project builds into a single cjsh binary and vendors its line-editing dependency, so the shell works out of the box without an external plugin stack or framework.
cjshis under active development. For the most stable experience, prefer tagged releases or package-manager builds.
Detailed install and onboarding guides are available in the documentation site.
brew tap CadenFinley/tap
brew install cjsh# Using yay
yay -S cjsh
# Using paru
paru -S cjsh- C compiler
- C++ compiler
- CMake 3.25 or newer
- Ninja
- Python 3 for parts of the test suite
git clone https://github.com/CadenFinley/CJsShell && cd CJsShell
cmake --preset release
cmake --build --preset release --parallelRun the shell with:
./build/release/cjshInstall it under a prefix with:
cmake --install build/release --prefix ~/.localrelease: optimized default builddebug: debug build with AddressSanitizer enabledminimal: size-focused release profilerelwithdebinfo: optimized build with debug symbolsminsizerel: CMakeMinSizeRelprofile
List all configured presets with cmake --list-presets.
The repository includes both focused CTest coverage and a larger shell integration harness.
Run the registered CTest suites:
ctest --preset releaseRun the full shell and integration harness from the repository root:
./tests/run_shell_tests.sh "build/release/cjsh"If you are working on parser, runtime, job-control, or memory-sensitive changes, also build and test the debug preset.
Project documentation is published at cadenfinley.github.io/CJsShell.
To preview the docs locally:
python3 -m pip install -r docs/requirements.txt
mkdocs serve --config-file docs/mkdocs.ymlSee CONTRIBUTING.md for development setup, formatting, testing, and pull request expectations.
This project is licensed under the MIT License. See LICENSE.