1 unstable release
0.1.0 | Jan 7, 2024 |
---|
#3 in #rush
57KB
1.5K
SLoC
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.
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.