ppsh A practice implementation of a Unix shell in modern C++. Highlighted Features different sources CLI - ppsh --command "cmd" script - ppsh script.sh interactive - ppsh pipes - cmd1 | cmd2 redirections - cmd1 <x >y; cmd2 >>z builtins - cd and exit Usage Container $ [docker|podman] run --interactive --tty docker.io/fackop/ppsh Local $ git clone https://github.com/papundekel/ppsh $ cd ppsh $ ./build.sh ./ <build-path> $ cmake --install <build-path> --config Release --prefix <your-installation-path> $ <your-installation-path>/ppsh Runtime Dependencies Boost >=1.74 readline >=8.2 Libraries Used Boost Spirit X3 - script parsing Boost Program Options - CLI parsing readline - interactive mode Development CMake - build system clang-format - code formatting pre-commit - git commit hooks Testing pytest - integration tests pytest-asyncio-cooperative - tests run asynchronously Developing Development Dependencies Python >=3.8 pre-commit >=3.5 CMake >=3.21 GCC >=13 + all runtime dependencies $ python -m venv .venv/ $ source .venv/bin/activate $ pip install -r requirements-dev.txt $ pre-commit install Testing $ pytest tests/tests --verbose --showlocals Additional Dependencies pytest >=7.4 pytest-asyncio-cooperative >=0.31 $ pip install -r tests/requirements.txt