#shell #implemented #external #rush #exit #command #posixy

nightly app moto-rush

A posixy shell implemented in Rust with minimal external dependencies

1 unstable release

0.1.0 Jan 7, 2024

#3 in #rush

MIT/Apache

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.

Dependencies