#!/bin/bash # 设置错误时立即退出 set -e # 日志函数 log_info() { echo "[INFO] $1" } log_warn() { echo "[WARN] $1" } log_error() { echo "[ERROR] $1" } # 检查是否为root用户 if [ "$EUID" -ne 0 ]; then log_error "请使用root权限运行此脚本" exit 1 fi # 获取当前用户名 CURRENT_USER=$SUDO_USER if [ -z "$CURRENT_USER" ]; then CURRENT_USER=$(who | awk '{print $1}' | head -n1) fi # 设置用户主目录 USER_HOME="/home/$CURRENT_USER" # 更新系统包 log_info "更新系统包..." apt-get update apt-get upgrade -y # 安装必要的依赖 log_info "安装必要的依赖..." apt-get install -y \ git \ curl \ wget \ build-essential \ zsh \ sudo \ fontconfig # 安装 Oh My Zsh log_info "安装 Oh My Zsh..." # 删除已存在的 Oh My Zsh 目录 if [ -d "${USER_HOME}/.oh-my-zsh" ]; then log_info "删除已存在的 Oh My Zsh 目录..." rm -rf ${USER_HOME}/.oh-my-zsh fi # 切换到用户目录 cd ${USER_HOME} # 安装 Oh My Zsh su - $CURRENT_USER -c 'sh -c "$(curl -fsSL https://raw.githubusercontent.com/ohmyzsh/ohmyzsh/master/tools/install.sh)" "" --unattended' # 设置 zsh 为默认 shell log_info "设置 zsh 为默认 shell..." chsh -s $(which zsh) $CURRENT_USER # 安装常用插件 log_info "安装常用插件..." su - $CURRENT_USER -c "git clone https://github.com/zsh-users/zsh-autosuggestions ${USER_HOME}/.oh-my-zsh/custom/plugins/zsh-autosuggestions" su - $CURRENT_USER -c "git clone https://github.com/zsh-users/zsh-syntax-highlighting.git ${USER_HOME}/.oh-my-zsh/custom/plugins/zsh-syntax-highlighting" # 配置 .zshrc log_info "配置 .zshrc..." # 备份现有的 .zshrc 文件 if [ -f "${USER_HOME}/.zshrc" ]; then log_info "备份现有的 .zshrc 文件..." mv ${USER_HOME}/.zshrc ${USER_HOME}/.zshrc.backup fi cat > ${USER_HOME}/.zshrc << 'EOL' # Enable Powerlevel10k instant prompt if [[ -r "${XDG_CACHE_HOME:-$HOME/.cache}/p10k-instant-prompt-${(%):-%n}.zsh" ]]; then source "${XDG_CACHE_HOME:-$HOME/.cache}/p10k-instant-prompt-${(%):-%n}.zsh" fi # Path to oh-my-zsh installation export ZSH="$HOME/.oh-my-zsh" # Theme ZSH_THEME="powerlevel10k/powerlevel10k" # Plugins plugins=( git docker docker-compose npm node python pip zsh-autosuggestions zsh-syntax-highlighting ) # Source oh-my-zsh source $ZSH/oh-my-zsh.sh # User configuration export LANG=en_US.UTF-8 export EDITOR='vim' export VISUAL='vim' # 设置自动补全快捷键为逗号 bindkey ',' autosuggest-accept # 历史记录配置 HISTSIZE=10000 SAVEHIST=10000 HISTFILE=~/.zsh_history setopt SHARE_HISTORY setopt HIST_IGNORE_ALL_DUPS setopt HIST_REDUCE_BLANKS # 目录栈配置 setopt AUTO_PUSHD setopt PUSHD_IGNORE_DUPS setopt PUSHD_SILENT # 自动补全配置 autoload -Uz compinit && compinit zstyle ':completion:*' menu select zstyle ':completion:*' matcher-list 'm:{a-zA-Z}={A-Za-z}' # Aliases alias ll='ls -la' alias ..='cd ..' alias ...='cd ../..' alias ....='cd ../../..' alias grep='grep --color=auto' alias mkdir='mkdir -pv' alias wget='wget -c' alias hist='history | grep' alias ports='netstat -tulanp' alias path='echo -e ${PATH//:/\\n}' alias now='date +"%T"' alias nowdate='date +"%d-%m-%Y"' alias update='sudo apt-get update' alias upgrade='sudo apt-get upgrade' alias meminfo='free -m -l -t' alias psmem='ps auxf | sort -nr -k 4' alias pscpu='ps auxf | sort -nr -k 3' alias wget='wget -c' alias getpass="openssl rand -base64 20" alias sha1='openssl sha1' alias ping='ping -c 5' alias mkdir='mkdir -pv' alias diff='colordiff' alias mount='mount |column -t' alias h='history' alias j='jobs -l' alias vi=vim alias svi='sudo vim' alias vis='vim "+set si"' alias edit='vim' # To customize prompt, run `p10k configure` or edit ~/.p10k.zsh. [[ ! -f ~/.p10k.zsh ]] || source ~/.p10k.zsh EOL # 安装 Powerlevel10k 主题 log_info "安装 Powerlevel10k 主题..." su - $CURRENT_USER -c "git clone --depth=1 https://github.com/romkatv/powerlevel10k.git ${USER_HOME}/.oh-my-zsh/custom/themes/powerlevel10k" # 安装字体 log_info "安装字体..." su - $CURRENT_USER -c "mkdir -p ${USER_HOME}/.local/share/fonts" su - $CURRENT_USER -c "cd ${USER_HOME}/.local/share/fonts && curl -LO https://github.com/romkatv/powerlevel10k-media/raw/master/MesloLGS%20NF%20Regular.ttf" su - $CURRENT_USER -c "cd ${USER_HOME}/.local/share/fonts && curl -LO https://github.com/romkatv/powerlevel10k-media/raw/master/MesloLGS%20NF%20Bold.ttf" su - $CURRENT_USER -c "cd ${USER_HOME}/.local/share/fonts && curl -LO https://github.com/romkatv/powerlevel10k-media/raw/master/MesloLGS%20NF%20Italic.ttf" su - $CURRENT_USER -c "cd ${USER_HOME}/.local/share/fonts && curl -LO https://github.com/romkatv/powerlevel10k-media/raw/master/MesloLGS%20NF%20Bold%20Italic.ttf" su - $CURRENT_USER -c "fc-cache -f -v" # 设置权限 log_info "设置权限..." chown -R $CURRENT_USER:$CURRENT_USER ${USER_HOME}/.oh-my-zsh chown -R $CURRENT_USER:$CURRENT_USER ${USER_HOME}/.zshrc chown -R $CURRENT_USER:$CURRENT_USER ${USER_HOME}/.local log_info "Zsh 环境配置完成!" log_info "请重新打开终端或运行 'source ~/.zshrc' 使配置生效" log_info "首次登录后,运行 p10k configure 来配置 Powerlevel10k 主题"