reubeno/brush
요약
reubeno/brush는 Rust로 작성된 현대적인 쉘(shell)로, bash 및 POSIX 호환성을 목표로 합니다. 기존의 `.bashrc` 설정과 모든 기능을 별도의 수정 없이 그대로 유지하면서도, 구문 강조와 자동 완성 같은 고급 기능을 내장하고 있습니다. 이 쉘은 다양한 운영체제 환경에서 설치가 가능하며, Rust 앱에 임베드할 수 있는 유연성까지 제공합니다.
핵심 포인트
- Rust로 작성되어 현대적이고 안정적인 쉘을 제공함.
- 기존의 `.bashrc` 설정(alias, 함수 등)을 별도 수정 없이 완벽하게 지원함.
- 구문 강조 및 히스토리 기반 자동 완성 기능을 기본으로 내장하고 있음.
- 50개 이상의 내장 명령과 전체 확장 기능 등 bash의 핵심 기능을 충실히 구현함.
- Rust 앱 개발 시 `brush_core::Shell`을 통해 쉘 로직을 쉽게 임베드할 수 있음.
brush
(Bo(u)rn(e) RUsty SHell)은 Rust로 작성된 현대적인 bash 및 POSIX 호환 쉘 (shell)입니다. 기존의 스크립트와 .bashrc를 구문 강조 (syntax highlighting) 및 자동 완성 (auto-suggestions) 기능과 함께 변경 없이 그대로 실행하세요.
✅ 기존의 .bashrc가
별도 설정 없이 그대로 작동합니다—alias, 함수 (functions), 완성 (completions) 등 모든 것이 포함됩니다.
✨ 구문 강조 (syntax highlighting) 및 자동 완성 (auto-suggestions) 기능이 내장되어 있습니다.
🧪 약 1,700개의 호환성 테스트를 통해 bash와 비교 검증되었습니다.
🧩 brush_core::Shell을 사용하여 Rust 앱에 쉽게 임베드 (embed)할 수 있습니다.
⚠️ 아직 모든 기능이 작동하는 것은 아닙: select 및 일부 예외 케이스 (edge cases)는 지원되지 않습니다. 자세한 내용은 호환성 참조 (Compatibility Reference)를 확인하세요.
$ cargo binstall brush-shell # cargo-binstall 사용
$ brew install brush # Homebrew 사용
$ pacman -S brush # Arch Linux
...
brush는 데일리 드라이버 (daily driver)로 사용할 준비가 되어 있습니다. 우리는 이 상태를 유지하기 위해 모든 변경 사항을 bash와 비교 테스트합니다.
더 자세한 설치 지침은 아래에서 확인할 수 있습니다.
| 기능 | 설명 |
|---|---|
| ✅ | 50개 이상의 내장 명령 (builtins) |
| ✅ | 전체 확장 (Full expansions) |
| ✅ | 제어 흐름 (Control flow) |
| ✅ | 리다이렉션 (Redirection) |
| ✅ | 배열 및 변수 (Arrays & variables) |
| ✅ | 프로그래밍 가능한 완성 (Programmable completion) |
| ✅ | 작업 제어 (Job control) |
| 🔷 | 트랩 및 옵션 (Traps & options) |
| 기능 | 설명 |
|---|---||
| ✅ | 구문 강조 (Syntax highlighting) | 입력하는 동안 실시간 적용 (reedline) |
| ✅ | 자동 완성 (Auto-suggestions) | 입력하는 동안 히스토리 기반 힌트 제공 (reedline) |
| ✅ | 풍부한 프롬프트 (Rich prompts) | PS1 / PROMPT_COMMAND, 우측 프롬프트, starship 호환 |
| ✅ | TOML 설정 (TOML config) | 영구 설정을 위한 ~/.config/brush/config.toml |
| 🧪 | 추가 기능 (Extras) | fzf / atuin 지원, zsh 스타일의 precmd / preexec 훅 (실험적), VS Code 터미널 통합 |
brush를 실행하면 시스템의 bash와 정확히 동일하게 보여야 합니다. 즉, .bashrc 및 기타 표준 설정을 처리합니다. 만약 시스템의 다른 쉘과 brush의 외형을 구분하고 싶다면, ~/.brushrc 파일을 작성할 수 있습니다.
🍺 Homebrew를 사용한 설치 (macOS/Linux)
Homebrew 사용자는 brush 포뮬러 (formula)를 사용하여 설치할 수 있습니다:
brew install brush
🐧 Arch Linux에 설치하기
Arch Linux 사용자는 공식 extra 저장소에서 brush를 설치할 수 있습니다:
pacman -S brush
🚀 cargo binstall을 통한 사전 빌드된 바이너리 설치
cargo binstall을 사용하여 사전 빌드된 brush 바이너리를 설치할 수 있습니다. cargo-binstall을 설치한 후 다음을 실행하면 됩니다:
cargo binstall brush-shell
🚀 GitHub에서 사전 빌드된 바이너리 설치
공식 릴리스를 위해 Linux (x86_64, aarch64) 및 macOS (aarch64)용 brush 사전 빌드 바이너리를 GitHub에 게시합니다. 해당 위치에 게시된 아카이브 중 하나에서 brush 바이너리를 수동으로 다운로드하여 압축을 풀거나, GitHub CLI를 사용하여 다운로드할 수 있습니다. 예:
gh release download --repo reubeno/brush --pattern "brush-x86_64-unknown-linux-gnu.*"
사용자의 플랫폼에 맞는 아카이브를 다운로드한 후, GitHub CLI를 사용하여 인증을 확인할 수 있습니다. 예:
gh attestation verify brush-x86_64-unknown-linux-gnu.tar.gz --repo reubeno/brush
🐧 Nix를 사용한 설치
Nix 사용자라면 등록된 버전을 사용할 수 있습니다:
nix run 'github:NixOS/nixpkgs/nixpkgs-unstable#brush' -- --version
🔨 소스에서 빌드하기
소스에서 빌드하려면 먼저 작동 가능한 (그리고 최신 버전의) rust 툴체인 (toolchain)을 설치하세요. rustup을 통해 설치하는 것을 권장합니다. 그 다음 아래 명령어를 실행하세요:
cargo install --locked brush-shell
이 프로젝트는 호기심과 배우고자 하는 열망에서 시작되었습니다. 저희는 그 태도를 계속 유지하고 있습니다. 만약 무언가가 예상대로 작동하지 않는다면, 저희에게 알려주세요!
- Discord server — 커뮤니티와 채팅하기
- Building from source — 개발 워크플로우 (development workflow)
- Contribution guidelines — 변경 사항 제출 방법
- Technical docs — 아키텍처 및 참조 문서
C/C++ 이외의 언어로 구현된 다른 POSIX 스타일의 쉘 (POSIX-ish shells):
nushell — 현대적인 Rust 쉘 (reedline 제공)
fish — 사용자 친화적인 쉘 (4.0 버전에서 Rust 포팅됨)
Oils — 새로운 Oil 언어를 사용하는 bash 호환 쉘
mvdan/sh — Go 구현체
rusty_bash — 또 다른 Rust 기반의 bash 유사 쉘
🙏 Credits
이 프로젝트는 많은 우수한 오픈 소스 (OSS) 크레이트 (crates)에 의존합니다:
reedline — readline 스타일의 입력 및 대화형 기능
clap — 커맨드 라인 파싱 (command-line parsing)
fancy-regex — 정규 표현식 (regex) 지원
tokio — 비동기 런타임 (async runtime)
nix — Unix/POSIX API
criterion.rs — 벤치마킹 (benchmarking)
bash-completion — 완성 (completion) 테스트 스위트
MIT 라이선스 하에 배포됩니다.
AI 자동 생성 콘텐츠
본 콘텐츠는 GitHub Trending Rust (weekly)의 원문을 AI가 자동으로 요약·번역·분석한 것입니다. 원 저작권은 원저작자에게 있으며, 정확한 내용은 반드시 원문을 확인해 주세요.
원문 바로가기