Progress on my shell In my [previous blog post](the-first-blog-post-and-a-few-additions.html), I introduced myself and also said that I managed to hack up a shell in about 1 hour or so. Well, 2 days, 2 rewrites, a few `rm -rf *`s, countless reads of nim's documentation and countless tiring battles with the nim compiler later, and now it has the support for shell variables. Yeah, not really exciting, but it feels good making something like this, even though I'll most likely toss it away after a while because I won't be able to look at the ugly as sin code I wrote there. But let's talk a little about the shell itself. It's similar to most other shells, in that it reads commands from the standard input, executes an external program as requested and prints its output. It's syntax is a lot different than most other shells though. its syntax is almost 100% ripped from [tcl](https://tcl.tk), which is perhaps one of my favorite scripting languages. Most, if not all of it, can be explained in only a couple of paragraphs, which I'm not exactly right now in a mood to write. However, I'll try to explain the best I can, with hopefully no mistakes along the way. Commands have almost the same format as posix shell commands. Commands end with a newline or a semicolon, and the command consists of a program name and its arguments separated by a space. quotes and braces can be used to have a string with spaces be treated as a single argument or program name. The difference between the two is that braces embed the string between them **literally**, while quotes modify the string between them, mainly interpelating variables or commands. Variables can either appear as an argument or program name, or inside of quotes. In both cases, a dollar sign ($) goes before the variable name. Output of commands can be embedded inside of commands by using brackets ([]). The command between them is read, evaluated, and the output is returned, which is then put in place of the brackets. And that's pretty much it. Of course, it's unbelievably oversimplified and hides the fact that most of these things probably don't work yet in my shell :) but it should hopefully make you interested. If you want to take a look at it, feel free to check out my [git repository on gitea](https://gitea.com/seculumforka/fsh/), or the mirror on [tildegit](https://tildegit.org/sforka/fsh). please note that the tildegit repository is just a mirror of the gitea repository, so my changes won't be visible immidiately. Either wait about an hour or so, or just grabit straight from the gitea repository. That should be all for now. It's unfortunate I couldn't make something more funny or amusing, ut I hope you understand. Will try making a new page on my website about this shell as well. Take care tags: fsh, shell, programming