may be a clone of Bash.
$ git clone https://github.com/shellgei/rusty_bash.git
$ cd rusty_bash
$ cargo build --release
$ ./target/release/rusty_bash
Rusty Bash reads .rusty_bashrc
in your home directory if it exists.
- ✔️ :available
- 🚧 :partially available (or having known bugs)
- 🙅 : not implemented
features | status | features | status | features | status |
---|---|---|---|---|---|
if | ✔️ | while | ✔️ | () | ✔️ |
{} | ✔️ | case | 🚧 | until | 🙅 |
for | 🙅 | (()) | 🚧 | [[]] | 🙅 |
features | status | features | status | features | status |
---|---|---|---|---|---|
|| | ✔️ | && | ✔️ | ; | ✔️ |
;; | ✔️ | | | ✔️ | & | 🚧 |
|& | 🙅 |
features | status | features | status | features | status |
---|---|---|---|---|---|
i | ✔️ | x | 🚧: | v | 🚧: |
features | status | features | status | features | status |
---|---|---|---|---|---|
* | ✔️ | @ | ✔️ | ? | ✔️ |
- | ✔️ | 0 | ✔️ | 1, 2, 3, ... | ✔️ |
# | ✔️ | $ | ✔️ | ! | 🙅 |
_ | ✔️ |
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 | features | status | features | status |
---|---|---|---|---|---|
OLDPWD | ✔️ | PWD | ✔️ | BASH | 🙅 |
BASHOPTS | 🙅 | BASHPID | 🙅 | BASH_ALIASES | 🙅 |
BASH_ARGC | 🙅 | BASH_ARGV | 🙅 | BASH_ARGV0 | 🙅 |
BASH_CMDS | 🙅 | BASH_COMMAND | 🙅 | BASH_EXECUTION_STRING | 🙅 |
BASH_LINENO | 🙅 | BASH_LOADABLES_PATH | 🙅 | BASH_REMATCH | 🙅 |
BASH_SOURCE | 🙅 | BASH_SUBSHELL | 🙅 | BASH_VERSINFO | 🙅 |
BASH_VERSION | 🙅 | COMP_CWORD | 🙅 | COMP_KEY | 🙅 |
COMP_LINE | 🙅 | COMP_POINT | 🙅 | COMP_TYPE | 🙅 |
COMP_WORDBREAKS | 🙅 | COMP_WORDS | 🙅 | COPROC | 🙅 |
DIRSTACK | 🙅 | EPOCHREALTIME | 🙅 | EPOCHSECONDS | 🙅 |
EUID | 🙅 | FUNCNAME | 🙅 | GROUPS | 🙅 |
HISTCMD | 🙅 | HOSTNAME | 🙅 | HOSTTYPE | 🙅 |
LINENO | 🙅 | MACHTYPE | 🙅 | MAPFILE | 🙅 |
OPTARG | 🙅 | OPTIND | 🙅 | OSTYPE | 🙅 |
PIPESTATUS | 🙅 | PPID | 🙅 | RANDOM | 🙅 |
READLINE_LINE | 🙅 | READLINE_POINT | 🙅 | REPLY | 🙅 |
SECONDS | 🙅 | SHELLOPTS | 🙅 | SHLVL | 🙅 |
UID | 🙅 | BASH_COMPAT | 🙅 | BASH_ENV | 🙅 |
BASH_XTRACEFD | 🙅 | CDPATH | 🙅 | CHILD_MAX | 🙅 |
COLUMNS | 🙅 | COMPREPLY | 🙅 | EMACS | 🙅 |
ENV | 🙅 | EXECIGNORE | 🙅 | FCEDIT | 🙅 |
FIGNORE | 🙅 | FUNCNEST | 🙅 | GLOBIGNORE | 🙅 |
HISTCONTROL | 🙅 | HISTFILE | 🙅 | HISTFILESIZE | 🙅 |
HISTIGNORE | 🙅 | HISTSIZE | 🙅 | HISTTIMEFORMAT | 🙅 |
HOME | 🙅 | HOSTFILE | 🙅 | IFS | 🚧 |
IGNOREEOF | 🙅 | INPUTRC | 🙅 | INSIDE_EMACS | 🙅 |
LANG | 🙅 | LC_ALL | 🙅 | LC_COLLATE | 🙅 |
LC_CTYPE | 🙅 | LC_MESSAGES | 🙅 | LC_NUMERIC | 🙅 |
LC_TIME | 🙅 | LINES | 🙅 | 🙅 | |
MAILCHECK | 🙅 | MAILPATH | 🙅 | OPTERR | 🙅 |
PATH | ✔️ | POSIXLY_CORRECT | 🙅 | PROMPT_COMMAND | 🙅 |
PROMPT_DIRTRIM | 🙅 | PS0 | 🙅 | PS1 | 🙅 |
PS2 | 🙅 | PS3 | 🙅 | PS4 | 🙅 |
SHELL | 🙅 | TIMEFORMAT | 🙅 | TMOUT | 🙅 |
TMPDIR | 🙅 | auto_resume | 🙅 | histchars | 🙅 |
features | status |
---|---|
coproc | 🙅 |
Partially in Japanese.
- blog articles
- Rustでシェル作った | κeenのHappy Hacκing Blog: https://keens.github.io/blog/2016/09/04/rustdeshierutsukutta/
- Rustで始める自作シェル その1 | ぶていのログでぶログ: https://tech.buty4649.net/entry/2021/12/19/235124
- Rustのターミナル操作crateいろいろ | meganehouser: https://meganehouser.github.io/2019-12-11_rust-terminal-crates.html