Releases
v0.4.0
Compare
Sorry, something went wrong.
No results found
v0.4.0 — Full Transpiler & Shell Binary
Features
ps-bash.exe shell binary — AOT-compiled native binary that transpiles bash to PowerShell and executes via persistent pwsh worker process
ps-bash -c 'command' for single commands
ps-bash -i for interactive mode
ps-bash -s for stdin input
Auto-locates pwsh via PATH, dotnet, winget, or default install paths
24 transpiler transforms covering all major bash syntax:
Redirects: /dev/null, 2>/dev/null, &>, >&, < file
Variables: $VAR, export VAR=val, bare VAR=val, ${var:-default}, ${#var}, ${var//pat/repl}, ${var^^}, ${var,,}
Substitution: backtick `cmd`, arithmetic $(()), process <(cmd)
Strings: here-string <<<, heredoc <<EOF
Tests: [ -f file ], [[ expr ]] with ==, !=, =~, globs
Control flow: if/elif/else/fi, for..in..do..done, while/until, case/esac
Expansion: {1..5}, {a,b,c}, ~/, /tmp/
Pipes: grep, sed, awk, cut, tr, sort, uniq, head, tail, wc, tee, xargs
Expression chaining: &&/|| with automatic [void]() wrapping
Parlot-based parser (v2) — structured AST parser with regex fallback for complex cases
ls multi-column grid output — bash-style column layout when not using -l
Invoke-ProcessSub — runtime helper for <() process substitution via temp files
CI/CD — GitHub Actions build matrix (win-x64, linux-x64, osx-arm64), packaging scripts
Bug Fixes
All pipe transforms route to Invoke-Bash* module functions (not bare PS cmdlets)
.NET file APIs resolve paths against PS $PWD (not .NET CurrentDirectory)
ls, cp, mv, rm support glob expansion on operands
pwd -P uses PS working directory, not .NET process directory
cat handles raw string pipeline input (here-string/heredoc compatibility)
Parameter expansion evaluates correctly inside double-quoted strings
export with && chaining works correctly
Date format regex handles multi-word timezone names
Tests
301 dotnet (xUnit) + 803 Pester = 1,104 total tests
You can’t perform that action at this time.