Skip to content

CadenFinley/CJsShell

Repository files navigation

CJ's Shell (cjsh) CI Codacy Badge Documentation Repo Size

POSIX-first scripting with a modern interactive shell experience

Terminal recording showing CJ's Shell features

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.

cjsh is under active development. For the most stable experience, prefer tagged releases or package-manager builds.

Install

Detailed install and onboarding guides are available in the documentation site.

Homebrew (macOS/Linux)

brew tap CadenFinley/tap
brew install cjsh

Arch Linux (AUR)

# Using yay
yay -S cjsh

# Using paru
paru -S cjsh

Build From Source

Requirements

  • C compiler
  • C++ compiler
  • CMake 3.25 or newer
  • Ninja
  • Python 3 for parts of the test suite

Build

git clone https://github.com/CadenFinley/CJsShell && cd CJsShell
cmake --preset release
cmake --build --preset release --parallel

Run the shell with:

./build/release/cjsh

Install it under a prefix with:

cmake --install build/release --prefix ~/.local

Available Presets

  • release: optimized default build
  • debug: debug build with AddressSanitizer enabled
  • minimal: size-focused release profile
  • relwithdebinfo: optimized build with debug symbols
  • minsizerel: CMake MinSizeRel profile

List all configured presets with cmake --list-presets.

Testing

The repository includes both focused CTest coverage and a larger shell integration harness.

Run the registered CTest suites:

ctest --preset release

Run 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.

Documentation

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.yml

Contributing

See CONTRIBUTING.md for development setup, formatting, testing, and pull request expectations.

License

This project is licensed under the MIT License. See LICENSE.

About

CJ's Shell (cjsh) POSIX shell scripting meets modern shell features

Topics

Resources

License

Contributing

Stars

Watchers

Forks

Contributors