IMPORTANT: the main branch is switched to the shell develped for articles on SoftwareDesign. (今までのメインブランチは、連載のものに比べて散らかりすぎなので、連載のものをmainに切り替えました。)
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.
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🌵
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.
- ✔️ :available
- 🚧 :partially available (or having known bugs)
- 🙅 : not implemented
features | status | features | status | features | status |
---|---|---|---|---|---|
command | ✔️ | substitutions | ✔️ | function definition | ✔️ |
features | status | features | status | features | status |
---|---|---|---|---|---|
if | ✔️ | while | ✔️ | () | ✔️ |
{} | ✔️ | case | 🙅 | until | 🙅 |
for | 🙅 |
features | status | features | status | features | status |
---|---|---|---|---|---|
|| | ✔️ | && | ✔️ | ; | ✔️ |
;; | ✔️ | | | ✔️ | & | ✔️ |
|& | ✔️ |
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 | ✔️ |
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 | ✔️ |
features | status |
---|---|
branch display in prompt | ✔️ |
Partially in Japanese.