Man, my shell is shit™
Revolutionary command-line interpreter, or an interactive shell based on toiletline written in C++17.
This software was made as a late april fools joke and literally everything is written from scratch.
The author did not expect that the shell is so complicated for no reason and some parts have architecture that is not very suitable for the shell language. There's no guarantee that this project will come any close to being finished or will not instantly break your computer upon the first start, so use it at your own risk.
The goal is to be a native, interactive, sh-compatible shell without any bells
and whistles, that can be used interchangeably on Windows and Linux and offer a
good sh experience on Windows to avoid having to tolerate PowerShell or some
other fancy crossplatform shells, preferably while being faster than all of
them. Later goal is to offer basic replacements of most common coreutils
commands like mkdir, rm, cat and others as shell builtins (and for the
moment, busybox-w32 can be used instead).
staging is the development branch. It may be broken at any time. master is
more stable and should usually pass all tests.
There may be unfinished goals, TODOs and FIXMEs scattered around the sources (in toiletline as well). Feel free to help :3
You need a C++17 compatible compiler (but currently only Clang is supported for
Windows); GNU Make, some coreutils: rm, mkdir to build the executable;
cat, diff, printf to run the tests; clang-format, clang-tidy (better
18 or newer) to check the code.
The MODE variable controls build type:
relis the optimized build;profis optimized build with debug symbols for profiling;dbgincludes all symbols and Asan with Ubsan;cosmois an optimized build which will try to usecosmoc++from the Cosmopolitan toolchain.
An example of the excruciatingly complex build process:
$ export MODE=<rel/prof/dbg/cosmo>
$ make -j`nproc`
$ ./shit --helpIs it usable?
- Run programs.
- Work on Linux and Windows.
- Logical sequences. (
&&,||,;) - Pipes.
- Redirections. (
>/<) - Shell expansion. (
?,[...],*,~) - Escaping.
- Environment variables.
- Numeric expressions.
Is it good?
- Background jobs.
- Scripting capabilities. (flow control keywords)
- Blocks and functions.
-
sh-compatible.
Is is exceptional?
- Complex scripting capabilites.
- Arbitrary precision numeric expressions.
- Cross-platform replacement for most common Unix programs which Windows does not have.