A project for some people learning a programming language is to write a shell, and I'm no different. There are many things that I'd like a shell, for example keybinds to all of my commands that I'd want fast access to (e.g., git), or perhaps completions and scripting abilities. And that's why I decided to write my own shell. Mostly as a learning experience but additionally to add my features later on. I'm calling my shell linsh (linux-shell, get it?) and so far I've added good old process forking (as one has to when writing a shell) and environment variable support. Soon I plan on adding the features that I was talking about earlier and additionally piping and output redirection.
Realistically, all one truely needs out of a shell is the ability to launch processes, usually done
thru something like:
pid_t child_pid = fork();
if (!child_pid)
execve("my_process", my_args);(excuse the formatting)but nowadays shells have the ability to pipe output from one process to another processes input, using '|' and the
pipe() system call and more.
At some point I'd like to add all of these features and more but of course I have other focuses right now, mostly on my Linux work, but also other things. Don't worry though, as updates will come as I am putting some more time into linsh.