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.
$ git clone https://github.com/shellgei/rusty_bash.git
$ cd rusty_bash
$ cargo run
・・・
Finished dev [unoptimized + debuginfo] target(s) in 0.04s
Running `target/debug/sush`
ueda@uedaP1g6:main🌵~/GIT/rusty_bash(debug)🍣
$ git clone https://github.com/shellgei/rusty_bash.git
$ cd rusty_bash
$ cargo build --release
### ↓ Change /bin/ to /usr/local/bin/ or another path in $PATH if you are using Mac or BSD ###
$ sudo cp target/release/sush /bin/
$ cp .sushrc_for_linux ~/.sushrc # edit if some errors occur
$ sush
ueda@uedaP1g6:main🌵~/GIT/rusty_bash🍣
Please give us issues or pull requests in a way you think sensible. We do not have a rigid rule at this stage.
- ✔️ :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 | ✔️ | tilde | ✔️ |
arithmetic | ✔️ | word splitting | ✔️ | path name | ✔️ |
command substitution | ✔️ | parameter/variable $A ${A} |
✔️ | ${name:offset}, ${name:offset:length} |
✔️ |
features | status | features | status | features | status |
---|---|---|---|---|---|
$ | ✔️ | ? | ✔️ | * | ✔️ |
@ | ✔️ | # | ✔️ | - | ✔️ |
! | 🙅 | _ | ✔️ |
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 |
---|---|---|---|---|---|
-c | ✔️ | -i | ✔️ | -l, --login | 🙅 |
-r | 🙅 | -s | 🙅 | -D | 🙅 |
[-+]O | 🙅 | -- | 🙅 | --debugger | 🙅 |
--dimp-po-strings | 🙅 | --help | 🙅 | --init-file | 🙅 |
--rcfile | 🙅 | --noediting | 🙅 | --noprofile | 🙅 |
--norc | 🙅 | --posix | 🙅 | --restricted | 🙅 |
-v, --verbose | 🙅 | --version | ✔️ | -e | ✔️ |
--pipefail | ✔️ | -B | ✔️ |
features | status | features | status | features | status |
---|---|---|---|---|---|
autocd | 🙅 | cdable_vars | 🙅 | cdspell | 🙅 |
checkhash | 🙅 | checkjobs | 🙅 | checkwinsize | 🙅 |
cmdhist | 🙅 | compat31 | 🙅 | compat32 | 🙅 |
compat40 | 🙅 | compat41 | 🙅 | dirspell | 🙅 |
dotglob | 🙅 | execfail | 🙅 | expand_aliases | 🙅 |
extdebug | 🙅 | extglob | ✔️ | extquote | 🙅 |
failglob | 🙅 | force_fignore | 🙅 | globstar | 🙅 |
gnu_errfmt | 🙅 | histappend | 🙅 | histreedit | 🙅 |
histverify | 🙅 | hostcomplete | 🙅 | huponexit | 🙅 |
interactive_comments | 🙅 | lastpipe | 🙅 | lithist | 🙅 |
login_shell | 🙅 | mailwarn | 🙅 | no_empty_cmd_completion | 🙅 |
nocaseglob | 🙅 | nocasematch | 🙅 | nullglob | 🙅 |
progcomp | 🙅 | promptvars | 🙅 | restricted_shell | 🙅 |
shift_verbose | 🙅 | sourcepath | 🙅 | xpg_echo | 🙅 |
Born Shell Variables
features | status | features | status | features | status |
---|---|---|---|---|---|
CDPATH | 🙅 | HOME | ✔️ | IFS | 🙅 |
🙅 | MAILPATH | 🙅 | OPTARG | 🙅 | |
OPTIND | 🙅 | PATH | ✔️ | PS1 | ✔️ |
PS2 | ✔️ |
Bash Variables
features | status | features | status | features | status |
---|---|---|---|---|---|
_ | ✔️ | BASH | 🙅 | BASHOPTS | 🙅 |
BASHPID | ✔️ | BASH_ALIASES | 🙅 | BASH_ARGC | 🙅 |
BASH_ARGV | 🙅 | BASH_ARGV0 | 🙅 | BASH_CMDS | 🙅 |
BASH_COMMAND | 🙅 | BASH_COMPAT | 🙅 | BASH_ENV | 🙅 |
BASH_EXECUTION_STRING | 🙅 | BASH_LINENO | 🙅 | BASH_LOADABLES_PATH | 🙅 |
BASH_REMATCH | 🙅 | BASH_SOURCE | 🙅 | BASH_SUBSHELL | ✔️ |
BASH_VERSINFO | ✔️ | BASH_VERSION | ✔️ | BASH_XTRACEFD | 🙅 |
CHILD_MAX | 🙅 | COLUMNS | 🙅 | COMP_CWORD | 🙅 |
COMP_LINE | 🙅 | COMP_POINT | 🙅 | COMP_TYPE | 🙅 |
COMP_KEY | 🙅 | COMP_WORDBREAKS | 🙅 | COMP_WORDS | 🙅 |
COMPREPLY | 🙅 | COPROC | 🙅 | DIRSTACK | 🙅 |
EMACS | 🙅 | ENV | 🙅 | EPOCHREALTIME | ✔️ |
EPOCHSECONDS | ✔️ | EUID | 🙅 | EXECIGNORE | 🙅 |
FCEDIT | 🙅 | FIGNORE | 🙅 | FUNCNAME | 🙅 |
FUNCNEST | 🙅 | GLOBIGNORE | 🙅 | GROUPS | 🙅 |
histchars | 🙅 | HISTCMD | 🙅 | HISTCONTROL | 🙅 |
HISTFILE | ✔️ | HISTFILESIZE | ✔️ | HISTIGNORE | 🙅 |
HISTSIZE | 🙅 | HISTTIMEFORMAT | 🙅 | HOSTFILE | 🙅 |
HOSTNAME | 🙅 | HOSTTYPE | ✔️ | IGNOREEOF | 🙅 |
INPUTRC | 🙅 | INSIDE_EMACS | 🙅 | LANG | ✔️ |
LC_ALL | 🙅 | LC_COLLATE | 🙅 | LC_CTYPE | 🙅 |
LC_MESSAGES | 🙅 | LC_NUMERIC | 🙅 | LC_TIME | 🙅 |
LINENO | ✔️ | LINES | 🙅 | MACHTYPE | ✔️ |
MAILCHECK | 🙅 | MAPFILE | 🙅 | OLDPWD | ✔️ |
OPTERR | 🙅 | OSTYPE | ✔️ | PIPESTATUS | ✔️ |
POSIXLY_CORRECT | 🙅 | PPID | 🙅 | PROMPT_COMMAND | 🙅 |
PROMPT_DIRTRIM | 🙅 | PS0 | 🙅 | PS3 | 🙅 |
PS4 | ✔️ | PWD | ✔️ | RANDOM | ✔️ |
READLINE_ARGUMENT | 🙅 | READLINE_LINE | 🙅 | READLINE_MARK | 🙅 |
READLINE_POINT | 🙅 | REPLY | 🙅 | SECONDS | ✔️ |
SHELL | ✔️ | SHELLOPTS | 🙅 | SHLVL | ✔️ |
SRANDOM | ✔️ | TIMEFORMAT | 🙅 | TMOUT | 🙅 |
TMPDIR | 🙅 | UID | 🙅 |
features | status |
---|---|
branch display in prompt | ✔️ |
Partially in Japanese.
- blog articles
© 2022-2024 shellgei group
- Ryuichi Ueda: @[email protected], @[email protected]
- @[email protected]