Skip to content

Latest commit

 

History

History
225 lines (176 loc) · 11.5 KB

README.md

File metadata and controls

225 lines (176 loc) · 11.5 KB

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

ubuntu-latest macos-latest

demo

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

$ 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)🍣

Install

$ 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🍣

For Contributors

Please give us issues or pull requests in a way you think sensible. We do not have a rigid rule at this stage.

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 ✔️ tilde ✔️
arithmetic ✔️ word splitting ✔️ path name ✔️
command substitution ✔️ parameter/variable $A ${A} ✔️ ${name:offset}, ${name:offset:length} ✔️

special parameters

features status features status features status
$ ✔️ ? ✔️ * ✔️
@ ✔️ # ✔️ - ✔️
! 🙅 _ ✔️

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 ✔️

options

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 ✔️

shopt

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 🙅

variables

Born Shell Variables

features status features status features status
CDPATH 🙅 HOME ✔️ IFS 🙅
MAIL 🙅 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 🙅

beyond Bash

features status
branch display in prompt ✔️

Thanks to

Partially in Japanese.

Copyright

© 2022-2024 shellgei group