# rush RUst SHell: a posixy shell implemented in Rust with minimal external dependencies. Q: Why another shell in Rust? A: Existing shell projects (a) aim to be 'a better shell', and (b) have a lot of dependencies, so they cannot be easily ported to non-standard OSes; and even non-standard OSes often need interactive shells. ## Goals - A simple interactive shell with a familiar subset of standard shell functionality; - Minimal external dependencies and thus easily portable; - To eventually comply, as much as posible, with the [spec](https://pubs.opengroup.org/onlinepubs/9699919799/utilities/contents.html). ## Non-goals - To be better than X (sh, bash, etc). The main purpose of this project is simplicity and portability. ## How to use - Just do a 'cargo run'; - Try various commands; - File bug reports; - Type 'exit' or 'quit'. ## What works - Basic line editing (arrows, home/end, del/backspace, basic history); - Command piping (e.g. 'ls | wc -l'); - Globbing (e.g. "ls src/\*.rs") (using glob crate). ## TODO - Non-interactive mode (batch processing); - Variables, environment, loops, eval, etc. ## Contributions: - Are welcome; - If you plan to add a large feature or make a non-trivial refactoring, please discuss your approach first.