Skip to content

Instantly share code, notes, and snippets.

@JaHIY
Created September 6, 2025 03:37
Show Gist options
  • Save JaHIY/846aa0c93b94567dec74975afdc90c49 to your computer and use it in GitHub Desktop.
Save JaHIY/846aa0c93b94567dec74975afdc90c49 to your computer and use it in GitHub Desktop.
minimal bashrc
# ========================
# 1. 基础配置与环境变量
# ========================
# 如果不是交互式 Shell,则停止执行
[[ $- != *i* ]] && return
# 设置默认文本编辑器
export EDITOR='vim'
export VISUAL='vim'
# 扩展命令搜索路径
export PATH="$HOME/bin:$HOME/.local/bin:$PATH"
# 设置 Bash 选项
shopt -s checkwinsize # 检查窗口大小变化
shopt -s histappend # 追加历史记录而不是覆盖
shopt -s globstar # 支持 ** 递归匹配目录
# ========================
# 2. 实用别名定义 (Aliases)
# ========================
# 导航与列表
alias ls='ls --color=auto -F'
alias ll='ls -l'
alias la='ls -A'
alias lla='ls -lA'
alias ..='cd ..'
alias ...='cd ../..'
alias .3='cd ../../../'
# 安全操作
alias rm='rm -i'
alias cp='cp -i'
alias mv='mv -i'
# 快速编辑与重载配置
alias bashrc='$EDITOR ~/.bashrc && source ~/.bashrc'
alias reload='source ~/.bashrc'
# 网络与系统
alias grep='grep --color=auto'
alias egrep='egrep --color=auto'
alias fgrep='fgrep --color=auto'
alias df='df -h'
alias du='du -h'
alias free='free -h'
# ========================
# 3. 自定义函数 (Functions)
# ========================
# 创建目录并进入
mkcd() {
mkdir -p "$1" && cd "$1"
}
# 计算文件或目录大小
dsize() {
du -sh "$@" 2>/dev/null | sort -h
}
# 快速提取压缩文件
extract() {
if [ -f "$1" ]; then
case "$1" in
*.tar.gz) tar -xzf "$1" ;;
*.tar.bz2) tar -xjf "$1" ;;
*.zip) unzip "$1" ;;
*) echo "不支持的文件格式: $1" ;;
esac
else
echo "文件不存在: $1"
fi
}
# 查找进程并高亮显示
psg() {
ps aux | grep -i "$1" | grep -v grep
}
# ========================
# 4. 提示符定制 (PS1)
# ========================
# 颜色定义
COLOR_RESET='\[\033[0m\]'
COLOR_RED='\[\033[1;31m\]'
COLOR_GREEN='\[\033[1;32m\]'
COLOR_YELLOW='\[\033[1;33m\]'
COLOR_BLUE='\[\033[1;34m\]'
COLOR_CYAN='\[\033[1;36m\]'
# 设置提示符:
# 格式: [用户@主机 工作目录]$
# 成功为绿色,失败为红色
set_prompt() {
local LAST_STATUS=$?
PS1="${COLOR_CYAN}[${COLOR_RESET}"
PS1+="${COLOR_GREEN}\u@\h${COLOR_RESET} "
PS1+="${COLOR_YELLOW}\w${COLOR_RESET}"
PS1+="${COLOR_CYAN}]${COLOR_RESET}"
if [ $LAST_STATUS -eq 0 ]; then
PS1+="${COLOR_GREEN}\$${COLOR_RESET} "
else
PS1+="${COLOR_RED}\$${COLOR_RESET} "
fi
}
export PROMPT_COMMAND='set_prompt'
# ========================
# 5. 历史记录配置
# ========================
# 设置历史命令记录格式:完整日期 + 时间 (YYYY-MM-DD HH:MM:SS)
export HISTTIMEFORMAT="%F %T "
# 增加历史记录容量
export HISTSIZE=5000
export HISTFILESIZE=10000
# 忽略重复和历史中的特定命令
export HISTCONTROL=ignoreboth:erasedups
# 忽略常见无用命令
export HISTIGNORE="ls:ll:la:cd:pwd:exit:history"
# 实时追加历史记录(避免多个会话丢失历史)
export PROMPT_COMMAND="$PROMPT_COMMAND; history -a"
# ========================
# 6. 色彩支持与安全选项
# ========================
# 确保终端支持色彩
if [ -x /usr/bin/dircolors ]; then
test -r ~/.dircolors && eval "$(dircolors -b ~/.dircolors)" || eval "$(dircolors -b)"
fi
# 安全选项:禁止执行包含空格的变量解析
set -o noclobber # 防止重定向覆盖文件
set -o nounset # 使用未定义变量时报错
# ========================
# 7. 本地配置覆盖(可选)
# ========================
# 如果存在本地配置文件,则引入
if [ -f ~/.bashrc.local ]; then
source ~/.bashrc.local
fi
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment