Compare commits
7 Commits
c5cc702462
...
master
| Author | SHA1 | Date | |
|---|---|---|---|
| cd1c59f021 | |||
| 01cd8eff49 | |||
| 6281d1cc0c | |||
| 4a185c3b1d | |||
| 396ac72b24 | |||
| 64b191d71a | |||
| 502f707d62 |
@@ -14,8 +14,8 @@ if status is-interactive
|
|||||||
test "$cat_cmd" = "batcat"; and abbr bat batcat
|
test "$cat_cmd" = "batcat"; and abbr bat batcat
|
||||||
test "$find_cmd" = "fdfind"; and abbr fd fdfind
|
test "$find_cmd" = "fdfind"; and abbr fd fdfind
|
||||||
|
|
||||||
# 使用 --cmd=cd:让 cd 也具备 zoxide 的跳转能力(交互式对应 cdi)
|
# 使用 zoxide init 添加 cd 和 cdi 命令
|
||||||
type -q zoxide; and zoxide init --cmd=cd fish | source
|
type -q zoxide; and zoxide init --cmd cd fish | source
|
||||||
|
|
||||||
# 命令缩写配置
|
# 命令缩写配置
|
||||||
test -n "$ls_cmd"; and abbr ls $ls_cmd
|
test -n "$ls_cmd"; and abbr ls $ls_cmd
|
||||||
|
|||||||
@@ -6,44 +6,66 @@ set -euo pipefail
|
|||||||
# - 不使用 chezmoi 的 .tmpl 模板语法;通过运行时检测 apt/pacman/dnf。
|
# - 不使用 chezmoi 的 .tmpl 模板语法;通过运行时检测 apt/pacman/dnf。
|
||||||
# - 脚本尽量保持幂等(包已安装会自动跳过)。
|
# - 脚本尽量保持幂等(包已安装会自动跳过)。
|
||||||
|
|
||||||
SUDO=""
|
# 包管理器配置
|
||||||
if [ "$(id -u)" -ne 0 ]; then
|
PACKAGE_LIST="zoxide exa bat fd fd-find ripgrep btop tldr fzf git vim tmux fish fastfetch thefuck"
|
||||||
if command -v sudo >/dev/null 2>&1; then
|
declare -A UPDATE_COMMAND
|
||||||
SUDO="sudo"
|
declare -A INSTALL_COMMAND
|
||||||
else
|
UPDATE_COMMAND=(
|
||||||
echo "需要 sudo 权限才能安装包(当前非 root,且找不到 sudo)。" >&2
|
[pacman]="pacman -Syu --noconfirm"
|
||||||
|
[apt]="apt update"
|
||||||
|
[dnf]="dnf makecache -y"
|
||||||
|
)
|
||||||
|
INSTALL_COMMAND=(
|
||||||
|
[pacman]="pacman -S --noconfirm"
|
||||||
|
[apt]="apt install -y"
|
||||||
|
[dnf]="dnf install -y"
|
||||||
|
)
|
||||||
|
|
||||||
|
# 输出函数
|
||||||
|
log() { echo -e "\033[34m$1\033[0m"; }
|
||||||
|
|
||||||
|
# 检查 sudo 权限(假设普通用户运行)
|
||||||
|
if ! command -v sudo >/dev/null 2>&1; then
|
||||||
|
log "❌ 需要sudo 权限才能安装包。"
|
||||||
exit 1
|
exit 1
|
||||||
|
fi
|
||||||
|
SUDO="sudo"
|
||||||
|
|
||||||
|
# 安装单个包函数
|
||||||
|
install_package() {
|
||||||
|
local install_cmd="$1"
|
||||||
|
local package="$2"
|
||||||
|
if $SUDO $install_cmd "$package"; then
|
||||||
|
log "✨ 安装 $package: ✓ 成功"
|
||||||
|
else
|
||||||
|
log "⚠️ 安装 $package: ✗ 跳过"
|
||||||
fi
|
fi
|
||||||
fi
|
}
|
||||||
|
|
||||||
|
# 安装包函数
|
||||||
|
install_packages() {
|
||||||
|
local package_manager="$1"
|
||||||
|
|
||||||
|
log "🔍 检测到 $package_manager,开始安装包..."
|
||||||
|
log "📦 更新包..."
|
||||||
|
$SUDO ${UPDATE_COMMAND[$package_manager]}
|
||||||
|
log "🚀 开始安装包..."
|
||||||
|
|
||||||
|
for package in $PACKAGE_LIST; do
|
||||||
|
install_package "${INSTALL_COMMAND[$package_manager]}" "$package"
|
||||||
|
done
|
||||||
|
|
||||||
|
log "✅ $package_manager 包安装完成!"
|
||||||
|
}
|
||||||
|
|
||||||
|
# 主逻辑:检测包管理器并安装
|
||||||
if command -v pacman >/dev/null 2>&1; then
|
if command -v pacman >/dev/null 2>&1; then
|
||||||
echo "检测到 pacman,开始安装 Arch/Manjaro 包..."
|
install_packages "pacman"
|
||||||
echo "更新系统包..."
|
|
||||||
$SUDO pacman -Syu --noconfirm
|
|
||||||
echo "安装 Bash 常用命令增强/替代工具..."
|
|
||||||
$SUDO pacman -S --noconfirm zoxide exa bat fd ripgrep btop tldr fzf
|
|
||||||
echo "安装其他常用工具..."
|
|
||||||
$SUDO pacman -S --noconfirm git vim tmux fish fastfetch thefuck
|
|
||||||
echo "Arch/Manjaro 包安装完成!"
|
|
||||||
elif command -v apt >/dev/null 2>&1; then
|
elif command -v apt >/dev/null 2>&1; then
|
||||||
echo "检测到 apt,开始安装 Debian/Ubuntu 包..."
|
install_packages "apt"
|
||||||
echo "更新包索引..."
|
|
||||||
$SUDO apt update -y || true
|
|
||||||
echo "安装 Bash 常用命令增强/替代工具..."
|
|
||||||
$SUDO apt install -y zoxide exa bat fd-find ripgrep btop tldr fzf
|
|
||||||
echo "安装其他常用工具..."
|
|
||||||
$SUDO apt install -y git vim tmux fish fastfetch thefuck
|
|
||||||
echo "Debian/Ubuntu 包安装完成!"
|
|
||||||
elif command -v dnf >/dev/null 2>&1; then
|
elif command -v dnf >/dev/null 2>&1; then
|
||||||
echo "检测到 dnf,开始安装 Fedora 包..."
|
install_packages "dnf"
|
||||||
echo "更新包元数据..."
|
|
||||||
$SUDO dnf makecache -y || true
|
|
||||||
echo "安装 Bash 常用命令增强/替代工具..."
|
|
||||||
$SUDO dnf install -y zoxide exa bat fd-find ripgrep btop tldr fzf
|
|
||||||
echo "安装其他常用工具..."
|
|
||||||
$SUDO dnf install -y git vim tmux fish fastfetch thefuck
|
|
||||||
echo "Fedora 包安装完成!"
|
|
||||||
else
|
else
|
||||||
echo "未检测到 apt / pacman / dnf,跳过安装。" >&2
|
log "❌ 未检测到 apt / pacman / dnf,跳过安装。"
|
||||||
fi
|
fi
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user