Initial settings

- Common aliases
- Distro-specific aliases
- Shell prompt
- README
This commit is contained in:
Candifloss 2025-08-05 16:44:49 +05:30
parent cbbd2bcec0
commit 2444248a8c
4 changed files with 214 additions and 2 deletions

View File

@ -1,3 +1,68 @@
# dotfiles_bash
# Bash Dotfiles
Bash Shell Configurations
System-wide `bash` Shell Configurations!
## Features
- **Centralized** - All configs in `/etc/bash/`.
- **System-wide** - Common configs for all users.
- **Modular structure** - Split by function (aliases, prompts, etc.)
- **OS-aware aliases** - Distro-specific aliases for appropriate package manager commands.
- **Colors!** - Use of colors where possible.
## How to use
1. Clone this repo to `/etc`.
```bash
git clone https://git.candifloss.cc/candifloss/dotfiles_bash.git /etc/bash
```
2. Add this to the end of `/etc/bash.bashrc`:
```bash
if [ -d /etc/bash ]; then # Check if the dir exists
for file in /etc/bash/*.sh; do # Include all the files in the dir
if [ -r "$file" ]; then # Check if the file exists
. "$file"
fi
done
fi
```
## File structure
```
/etc/bash/ # `mkdir` or `git clone` to this directory
├── bash_alias_common.sh # Common aliases
├── bash_alias_distro.sh # Distro-specific aliases
├── bash_prompt.sh # Shell prompt
├── LICENSE # Repo license
└── README.md # This file
```
## Trouble-shooting
- Alias not working?
Run `alias | grep <command>` to find overrides
- Settings over-ridden?
These files can override your aliases and other settings (check in order):
1. `/etc/profile`
2. `/etc/bash.bashrc`
3. `~/.bash_profile`
4. `~/.bash_login`
5. `~/.profile`
6. `~/.bashrc`
- Permission errors
```bash
sudo chmod -R 755 /etc/bash
```
- Debug Loading Order
Check which files are loaded
```bash
bash --login --verbose --norc 2>&1 | grep -E '^\+.*\. '
```
- Colors missing?
Check the `TERM` variables and your terminal's capabilities.

61
bash_alias_common.sh Normal file
View File

@ -0,0 +1,61 @@
#---------------------------------------------------------------------
# Navigation
#---------------------------------------------------------------------
alias ..='cd ..' # Go up one directory
alias ...='cd ../..' # Go up two directories
alias ....='cd ../../..' # Go up three directories
alias ~='cd ~' # Go to home directory
alias -- -='cd -' # Go to previous directory
#---------------------------------------------------------------------
# Listing (using lsd)
#---------------------------------------------------------------------
alias ls='lsd --color=always' # Basic colored listing
alias l='lsd -lh' # Detailed list
alias la='lsd -alh' # All files (including hidden) with details
alias lt='lsd --tree' # Tree view
alias l.='lsd -d .*' # Only hidden files
#---------------------------------------------------------------------
# Safety & Confirmation
#---------------------------------------------------------------------
alias rm='rm -iv' # Confirm before deleting (verbose)
alias cp='cp -iv' # Confirm before overwriting (verbose)
alias mv='mv -iv' # Confirm before moving (verbose)
alias mkdir='mkdir -pv' # Create parent directories if needed (verbose)
#---------------------------------------------------------------------
# Improved CLI Tools
#---------------------------------------------------------------------
alias grep='grep --color=always' # Always colorize grep output
alias egrep='egrep --color=always'
alias fgrep='fgrep --color=always'
alias diff='diff --color=always'
alias ip='ip -color=always'
alias less='less -R' # Use bat as less replacement
#---------------------------------------------------------------------
# Bat (cat replacement)
#---------------------------------------------------------------------
alias cat='bat -pP' # Plain paging with syntax highlighting
alias bless='bat --paging=always --style=plain' # Full pager mode
#---------------------------------------------------------------------
# Miscellaneous
#---------------------------------------------------------------------
alias c='clear' # Clear screen
alias h='history' # Show history
alias j='jobs -l' # List jobs
alias vi='vim' # Always use vim
alias df='df -h' # Human-readable disk space
alias du='du -h' # Human-readable directory sizes
alias free='free -h' # Human-readable memory usage
#---------------------------------------------------------------------
# Color Support
#---------------------------------------------------------------------
# Enable color support for various commands
if [ -x /usr/bin/dircolors ]; then
test -r ~/.dircolors && eval "$(dircolors -b ~/.dircolors)" || eval "$(dircolors -b)"
fi

57
bash_alias_distro.sh Normal file
View File

@ -0,0 +1,57 @@
#!/usr/bin/env bash
# OS-specific aliases
# Manually set OS (comment out for auto-detection)
export OS="debian"
# OS Detection (if not manually set)
if [[ -z "$OS" ]]; then
if [[ -f /etc/os-release ]]; then
OS=$(grep -oP '^ID=\K.+' /etc/os-release | tr -d '"')
elif [[ $(uname) == "FreeBSD" ]]; then
OS="freebsd"
fi
export OS
fi
# OS-Specific Aliases
case "$OS" in
debian)
alias inst='sudo apt-get install -y'
alias updt='sudo apt-get update && sudo apt-get upgrade -y && rustup update'
;;
ubuntu)
alias inst='sudo apt-get install -y'
alias updt='sudo apt-get update && sudo apt-get upgrade -y && sudo snap refresh && rustup update'
;;
arch|manjaro)
alias inst='sudo pacman -S'
alias updt='sudo pacman -Syuu --noconfirm && paru -Syu --noconfirm && rustup update'
;;
fedora|centos|rhel|rocky|almalinux)
alias inst='sudo dnf install -y'
alias updt='sudo dnf upgrade -y && rustup update'
;;
opensuse*|tumbleweed)
alias inst='sudo zypper install -y'
alias updt='sudo zypper refresh && sudo zypper update -y && rustup update'
;;
void)
alias inst='sudo xbps-install -Sy'
alias updt='sudo xbps-install -Su && rustup update'
;;
alpine)
alias inst='sudo apk add'
alias updt='sudo apk update && sudo apk upgrade && rustup update'
;;
freebsd)
alias inst='sudo pkg install -y'
alias updt='sudo pkg update && sudo pkg upgrade -y && rustup update'
;;
*)
echo "No OS-specific aliases for OS: $OS" >&2
;;
esac
# Cleanup (unset helper functions if needed)
unset -f _detect_os 2>/dev/null

29
bash_prompt.sh Normal file
View File

@ -0,0 +1,29 @@
set_prompt() {
local EXIT_STATUS="$?"
local COLOR_RESET='\[\033[0m\]'
# User settings
if (( EUID == 0 )); then
local COLOR_USER='\[\033[38;2;180;40;120m\]' # Purple-red (root)
local PROMPT_SYMBOL='#'
else
local COLOR_USER='\[\033[38;2;44;162;221m\]' # Azure blue (user)
local PROMPT_SYMBOL='$'
fi
# Host and path
local COLOR_HOST='\[\033[38;2;44;180;70m\]' # Emerald green
local COLOR_PATH='\[\033[38;2;126;98;247m\]' # Soft purple
# Dynamic symbol color
if (( EXIT_STATUS != 0 )); then
local COLOR_SYMBOL='\[\033[38;2;255;50;50m\]' # Bright red (error)
else
local COLOR_SYMBOL='\[\033[38;2;67;91;18m\]' # Olive green (success)
fi
# Final prompt assembly
PS1="${COLOR_USER}\u${COLOR_RESET}@${COLOR_HOST}\h${COLOR_RESET}:${COLOR_PATH}\w${COLOR_RESET}${COLOR_SYMBOL}${PROMPT_SYMBOL}${COLOR_RESET} "
}
PROMPT_COMMAND=set_prompt