#!/usr/bin/env bash set -e echo "======================================" echo " Ubuntu Zsh Kali Style 安装脚本" echo " 功能:命令补全 / 灰色提示 / 语法高亮" echo "======================================" # 判断是否为 root if [ "$EUID" -ne 0 ]; then echo "请使用 root 权限运行:" echo "sudo bash install-zsh-kali-style.sh" exit 1 fi # 获取真实用户 if [ -n "$SUDO_USER" ]; then REAL_USER="$SUDO_USER" USER_HOME=$(eval echo "~$SUDO_USER") else REAL_USER="root" USER_HOME="/root" fi echo "当前配置用户:$REAL_USER" echo "用户目录:$USER_HOME" echo echo "【1/6】更新软件源..." apt update echo echo "【2/6】安装基础组件..." apt install -y zsh git curl wget fzf autojump bash-completion echo echo "【3/6】安装 Oh My Zsh..." export RUNZSH=no export CHSH=no export KEEP_ZSHRC=yes if [ ! -d "$USER_HOME/.oh-my-zsh" ]; then sudo -u "$REAL_USER" sh -c \ "RUNZSH=no CHSH=no KEEP_ZSHRC=yes sh -c \"\$(curl -fsSL https://raw.githubusercontent.com/ohmyzsh/ohmyzsh/master/tools/install.sh)\"" else echo "Oh My Zsh 已存在,跳过安装。" fi ZSH_CUSTOM="$USER_HOME/.oh-my-zsh/custom" echo echo "【4/6】安装插件..." install_plugin() { local name="$1" local repo="$2" local target="$ZSH_CUSTOM/plugins/$name" if [ ! -d "$target" ]; then sudo -u "$REAL_USER" git clone "$repo" "$target" else echo "$name 已存在,跳过。" fi } install_plugin "zsh-autosuggestions" "https://github.com/zsh-users/zsh-autosuggestions" install_plugin "zsh-syntax-highlighting" "https://github.com/zsh-users/zsh-syntax-highlighting.git" install_plugin "zsh-completions" "https://github.com/zsh-users/zsh-completions" echo echo "【5/6】配置 .zshrc..." ZSHRC="$USER_HOME/.zshrc" if [ -f "$ZSHRC" ]; then cp "$ZSHRC" "$ZSHRC.bak.$(date +%Y%m%d%H%M%S)" fi cat > "$ZSHRC" <<'EOF' export ZSH="$HOME/.oh-my-zsh" ZSH_THEME="robbyrussell" plugins=( git sudo docker docker-compose fzf autojump zsh-completions zsh-autosuggestions zsh-syntax-highlighting ) source $ZSH/oh-my-zsh.sh # 启用更强补全 autoload -U compinit && compinit # 自动补全菜单风格 zstyle ':completion:*' menu select # 忽略大小写补全 zstyle ':completion:*' matcher-list 'm:{a-zA-Z}={A-Za-z}' # 历史记录设置 HISTSIZE=10000 SAVEHIST=10000 setopt HIST_IGNORE_ALL_DUPS setopt HIST_SAVE_NO_DUPS setopt SHARE_HISTORY # 方向键搜索历史命令 bindkey '^[[A' history-beginning-search-backward bindkey '^[[B' history-beginning-search-forward # 允许使用右方向键接受灰色提示 bindkey '^[[C' forward-char EOF chown "$REAL_USER:$REAL_USER" "$ZSHRC" echo echo "【6/6】设置默认 Shell 为 zsh..." ZSH_PATH=$(which zsh) if [ "$REAL_USER" = "root" ]; then chsh -s "$ZSH_PATH" root else chsh -s "$ZSH_PATH" "$REAL_USER" fi echo echo "======================================" echo "安装完成!" echo echo "请退出当前 SSH,然后重新登录:" echo "exit" echo echo "重新登录后就是 zsh 终端。" echo echo "如果要立即体验,可以执行:" echo "zsh" echo echo "配置文件备份在:" echo "$ZSHRC.bak.时间戳" echo "======================================"