RuShell

A Shell built in rust build around the bogobble parser system.

It has a few features not many shells have:

There is still plenty to do, but many things work

install using "cargo install ru_shell"

To set environment up you create a file called "$HOME/.config/rushell/init.rush"

In it put something like

A normal looking shell prompt

text let RU_PROMPT=r#"${USERNAME,rushell} \e33m$PWD\n>>\e0m"# Here :

The prompt I normally use

text let RU_PROMPT= r#"\e1m\e34m${USERNAME,Matt}: :\e32m$(basename $PWD)\n\e34m>>\e0m"#

if you have starship installed you can use it like this:

text let RU_PROMPT = r"$(starship prompt)"

The other environment variables RuShell explicitly uses are "PWD", "PATH" ,"RU_HIGHLIGHT", "RU_COMPLETE", however the latter two are not completely settled yet.

The "init.rush" file will be run at the beginning of each shell, and it handles acts as though you had just typed them all in at the file at the beginning of the session.

Usage

In General using Ru Shell should feel much like using any other shell, with a few notable exceptions.

Blocks are curly braced

```text for x in * { echo $x }

if true { echo Its True } else { echo Its False }

```

There is a keyword for disown

text disown syncthing --no-browser

Assigners : Export, Let, Set, Push

There are four ways to write to variables, they all look the same:

```text let x = a set x = b push x = :c export x = d echo $x

prints b:c

```

Here's what they do

when reading variables, The current scope is checked first, then outwards, until finally environment variables.

All assigners can assign multiple variables at once.

```text let x y = a [4 5 6]

for m in $y { echo $x -- $m }

```

prints

text a -- 4 a -- 5 a -- 6

Changelog

v0.1.3