A simple shell written in C!
This shell was created as a final project for the Harvard CS50 course. As my first real dive into independent C programming, it was an amazing tool to learn the ins and outs of C, git and how shells function on a lower level.
Bash and zsh were the main inspirations for the shell, the latter inspiring the name as well. The initial goal was to create a simple command line interface that accepted specific commands and responded to them. As I progressed, I eventually wanted this to become a fully featured shell with git integration, directory navigation and more!
In the v1.0.0 release, wizsh is capable of most common directory navigation commands as well as file and directory modification. It also contains a number of git commands, enough to maintain a small repository. Be sure to check out the wiki for a full list of commands.
PREFACE: Wizsh was built on an M1 Mac with no other systems in mind! This means that there are likely issues when attempting to build and run this on any x86 machine. This would be a great issue to contribute to!
These instructions assume that you have installed homebrew and all other dependencies. In most cases, the command below will install all the packages you will need for this app.
brew install libgit2 pkg-config libssh2 openssl
To use wizsh, first install the latest release.
Next, simply run the binary wizsh
located in the /bin
directory.
To run wizsh locally, you will first need to clone the repository.
Next, navigate to the wizsh directory. Typically just cd wizsh
from wherever the clone
command was run.
To build the binaries you will first need to run make build
. This created the object and binary directories.
Use the command make
to build to binary. It is usually best to run a make clean
first to make sure you are starting a fresh build.
Run the binary by using the command bin/wizsh
. This is the same as cd bin && wizsh
.
Be sure to check out the wiki for information on commands!
Wizsh is very open to contributions! If you have a feature request, or bug report, please open an issue with the applicable tag. If you would like to simply create a feature, fork the repository and add in your changes. Then submit a pull request which will be reviewed and eventually merged if it meets all contribution requirements.
I would be absolutely thrilled to contiue working on this with other developers. If you have noticed a long period of inactivity, feel free to reach out to me at the link below to get the current status of this project.
A handful of libraries were used to create this project. Without them, a lot of features would not have been possible. A list of all included libraries can be found below with links to their websites/documentation.
If you have any questions about the project you can reach out to me via email or GitHub with the information below.
Email: [email protected]
GitHub: Thenlie