The main purpose of this project is a curiosity in system programming. I was using such shell giants as zsh and fish with abnormal amount of features. So I decided to deep dive on this topic. As the result Kara was born, minimalistic usable Linux shell.
- execution of different programs
- two builtin commands:
cd
,exit
- redirecting keyboard signals such as
^C
to current execution processes instead of shell - I/O redirecting via
<
,>
and2>
for programs - piping via
|
symbol - expansion
~
to home directory path - reading environment variables with
$
symbol (echo $USER
will print current user instead of $USER) - commands history and input processing with emacs bindings are implemented with GNU readline library
Kara is Linux shell, and I didn't try to run in on macOS or FreeBSD, but you free to do it and leave messages in the issues section.
Kara depends on the GNU readline library. I suspect that any version is fine. Also, you'll need git, gcc and make, which are preinstalled on most Linux distributions.
Ubuntu:
sudo apt install libreadline-dev
Fedora:
sudo dnf install readline readline-devel
Arch:
sudo pacman -S readline
git clone https://github.com/amaom1/karashi.git
cd karashi
make && sudo make install
In karashi directory enter that command:
sudo make uninstall
Now Kara is not installed in your $PATH and you free to delete repository too.
Kara provides some kind of overview of what it is capable of. To run it just enter that command after building project:
make test
Kara provides auto-generated documentation via Doxygen. If you are interested in the project structure but don't want to view the source code, you can check out the documentation on the GitHub pages.