1) I made Unix commands a first-class variable type. You could create a single Unix command and store it into a variable. You could also set up several commands as a pipe, and save that into a variable.
2) redirection and pipes are more Forth in style. Much like adding two values:
2 3 +
To create a pipe, you create the two commands and then pipe them: cmd1 cmd2 |
I'm looking over the code, and I don't think I finished redirection to tell the truth, but I can see it being easy to add it like: cmd1 "filename" |
since variables are typed in my Forth-like language.It was a fun project to write (it even included history!) but as a practical shell? Not so much. The syntax left much to be desired for an interactive shell.
[1] Unix systems programming. The class project was a Unix shell. I had, by that time, already written a Forth-like programming language on my own [2], which meant I could do the advanced shell (programmable) instead of the simple shell (command execution and redirection only).
[2] I was seriously interested in Forth at the time.