Skip to content

shellgei/rusty_bash

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

Rusty Bash (a.k.a. sushi 🍣 shell)

ubuntu-latest macos-latest

IMPORTANT: the main branch is switched to the shell develped for articles on SoftwareDesign. (今までのメインブランチは、連載のものに比べて散らかりすぎなので、連載のものをmainに切り替えました。)

What's this?

A clone of Bash, which is developed as a hobby of our group and for monthly articles on SoftwareDesign magazine published by Gijutsu-Hyohron Co., Ltd.

Quick Start

ueda@uedaP1g6:~$ git clone https://github.com/shellgei/rusty_bash.git
ueda@uedaP1g6:~$ cd rusty_bash
ueda@uedaP1g6:~$ cargo run
   Compiling sush v2025.6.9 (/home/ueda/GIT/rusty_bash)
    Finished dev [unoptimized + debuginfo] target(s) in 2.33s
     Running `target/debug/sush`
ueda@uedaP1g6:~🍣 main🌵

For Contributors

Since the main branch must synchronize the articles, further developments are reflected in the following branches. We prepared dev-* branches for adding your codes with pull requests.

  • dev-builtins: for builtin commands
  • dev-signal: for development on signal
  • dev-test: for development of a nice test system and test cases (we need more sophisticated test)
  • dev-others: for development of other features

These dev-* branches will be merged to the main branch depending on the situation of the articles. You can also propose some dev-foobar branches.

List of Features

  • ✔️ :available
  • 🚧 :partially available (or having known bugs)
  • 🙅 : not implemented

simple commands

features status features status features status
command ✔️ substitutions ✔️ function definition ✔️

compound commands

features status features status features status
if ✔️ while ✔️ () ✔️
{} ✔️ case 🙅 until 🙅
for 🙅

control operator

features status features status features status
|| ✔️ && ✔️ ; ✔️
;; ✔️ | ✔️ & ✔️
|& ✔️

expansion

features status features status features status
brace {a,b} ✔️ brace {1..10} 🙅 tilde ✔️
parameter/variable $A ${A} ✔️ parameter/variable (others) 🙅 command substitution ✔️
arithmetic 🙅 word splitting ✔️ path name ✔️

builtin commands

features status features status features status
cd ✔️ pwd ✔️ read 🙅
exit ✔️ source 🙅 set 🙅
shopt 🙅 : ✔️ . 🙅
alias 🙅 bg 🙅 bind 🙅
break 🙅 builtin 🙅 caller 🙅
command 🙅 compgen 🙅 complete 🙅
compopt 🙅 continue 🙅 declare 🙅
dirs 🙅 disown 🙅 echo 🙅
enable 🙅 eval 🙅 exec 🙅
fc 🙅 fg 🙅 getopts 🙅
hash 🙅 help 🙅 history 🙅
jobs 🙅 kill 🙅 let 🙅
local 🙅 logout 🙅 mapfile 🙅
popd 🙅 printf 🙅 pushd 🙅
read 🙅 readonly 🙅 return 🙅
shift 🙅 suspend 🙅 test 🙅
times 🙅 trap 🙅 true ✔️
type 🙅 typeset 🙅 ulimit 🙅
umask 🙅 unalias 🙅 unset 🙅
wait 🙅 export 🙅 false ✔️

beyond Bash

features status
branch display in prompt ✔️

Thanks to

Partially in Japanese.

Releases

No releases published

Packages

No packages published