The rock-solid Bash package manager
STATUS: BETA (expect breaking changes until a post-beta release)
basalt
is a rewritten fork of basher that adds a ton of new functionality. It makes it significantly easier to install Bash, Zsh, etc. projects to your computer. Often, these projects/scripts are not available through official apt
, DNF
, pacman
repositories, or even from unofficial sources like third-party apt repositories or the AUR
Let's say you want to install rupa/z, tj/git-extras, aristocratos/bashtop, and JosefZIla/bash2048. Simply run the following
$ basalt global add rupa/z tj/git-extras aristocratos/bashtop JosefZIla/bash2048
This symlinks all executable scripts to a common directory. It does this for completion files and manpages as well
$ exa -l --no-permissions --no-filesize --no-user ~/.local/share/basalt/global/bin/
bash2048.sh -> .../.local/share/basalt/store/packages/github.com/JosefZIla/bash2048@.../bash2048.sh
bashtop -> .../.local/share/basalt/store/packages/github.com/aristocratos/bashtop@.../bashtop
git-alias -> .../.local/share/basalt/store/packages/github.com/tj/git-extras@.../bin/git-alias
git-archive-file -> .../.local/share/basalt/store/packages/github.com/tj/git-extras@.../bin/git-archive-file
...
To be able to access the binaries, completion files, and manpages in your shell, add a two-liner in your shell configuration. The installation script already does this for you
# ~/.bashrc
export PATH="${XDG_DATA_HOME:-$HOME/.local/share}/basalt/source/bin:$PATH"
eval "$(basalt global init bash)" # zsh and fish are also supported
NOTE: Basalt is currently BETA. There are known bugs that will be fixed. I highly recommended to wait until v1.0.0
before trying anything out
See Installation and Getting Started for more details
- Install most Bash/Zsh/Fish projects out of the box
- Local Bash packages (Awk/Zsh/Fish/Ksh,Powershell coming later)
- Custom builtins for Bash packages (not yet implemented)
- Robust (lockfile usage, transaction rollback (not yet implemented), great error handling)
- Bundle (bundle a project and its dependencies into a single file) (not yet implemented)
Because of Basalt, I've been able to make
- bake - A Bash-based Make alternative
- woof - The version manager to end all version managers
- bash-object - Manipulate heterogenous data hierarchies in Bash
- bash-term - Bash library for terminal escape sequences.
See the full list awesome-basalt and at the GitHub organization bash-bastion.
Original code is licensed under MIT
by Juan Ibiapina. Modifications are licensed under BSD-3-Clause
by Edwin Kofler