Skip to content

biubushy/zsh_init

Repository files navigation

ZSH 初始化配置工具

🚀 项目简介

这是一个专为 Linux 系统(主要支持 Debian/Ubuntu,其他发行版可自行测试)设计的自动化终端环境配置工具。主要功能是在创建新用户时,自动为用户配置现代化的终端环境,提升开发效率和用户体验。

✨ 主要特性

  • 🎨 美观主题:采用 powerlevel10k 主题,提供丰富的视觉信息
  • 🤖 智能补全:zsh-autosuggestions 插件提供命令自动建议
  • 🌈 语法高亮:zsh-syntax-highlighting 插件实时显示命令合法性
  • 🐍 Conda 集成:可选的 Miniconda 环境配置
  • 🚀 一键部署:单条命令完成所有配置
  • 🔄 重复执行保护:智能检测避免重复配置

📁 项目架构

zsh_init/
├── oh-my-zsh-pkg.tar.gz           # Oh My Zsh 预配置包(包含主题和插件)
├── user-setup-zsh.sh             # 系统管理员执行脚本(仅 zsh 版本)
├── user-setup-zsh-conda.sh       # 系统管理员执行脚本(zsh + conda 版本)
├── setup-oh-my-zsh.sh           # 用户登录时自动执行的配置脚本(仅 zsh)
├── setup-zsh-conda.sh           # 用户登录时自动执行的配置脚本(zsh + conda)
└── README.md                     # 项目文档

📋 配置方案

方案一:user-setup-zsh(纯 zsh 环境)

适用场景:只需要现代化终端环境,不需要 Python 开发环境

包含组件

  • Shell: Zsh (替代默认 bash)
  • 框架: Oh My Zsh
  • 主题: powerlevel10k
  • 插件:
    • zsh-autosuggestions:根据历史命令智能提示,按右箭头采纳建议
    • zsh-syntax-highlighting:实时语法检查,合法命令显示绿色,非法命令显示红色

一键安装

curl -fsSL https://ghfast.top/https://raw.githubusercontent.com/biubushy/zsh_init/main/user-setup-zsh.sh | sudo bash

方案二:user-setup-zsh-conda(zsh + conda 环境)

适用场景:需要 Python 开发环境或数据科学工作环境

包含组件

  • 基础环境:与方案一完全相同的 zsh 配置
  • Python 环境:Miniconda3-py39_24.9.2-0-Linux-x86_64
  • 包管理器集成:conda 与 zsh 完美集成
  • 镜像源优化:自动配置清华大学镜像源,提升下载速度

一键安装

curl -fsSL https://ghfast.top/https://raw.githubusercontent.com/biubushy/zsh_init/main/user-setup-zsh-conda.sh | sudo bash

🛠️ 使用说明

前置要求

  • 操作系统:Debian/Ubuntu(推荐)或其他 Linux 发行版
  • 权限要求:需要 sudo 权限执行系统级配置
  • 网络要求:需要能够访问 GitHub 和清华镜像源
  • 依赖软件:curl、tar、zsh、bash、chsh

注意:脚本会自动检测并安装缺失的依赖项,支持 apt-get、yum、dnf 等包管理器

安装步骤

  1. 选择配置方案:根据需求选择纯 zsh 或 zsh+conda 方案

  2. 执行安装命令:以管理员权限运行对应的一键安装命令

  3. 创建用户:使用 adduser 命令创建新用户

    sudo adduser 用户名
  4. 用户登录:新用户首次登录时会自动进行环境配置

  5. 完成配置:用户可能需要输入密码完成 powerlevel10k 的初始化向导

配置验证

用户登录后可以通过以下方式验证配置是否成功:

# 检查当前 shell
echo $SHELL
# 应该显示:/usr/bin/zsh 或 /bin/zsh

# 检查 Oh My Zsh 安装
ls -la ~/.oh-my-zsh
# 应该显示 Oh My Zsh 目录结构

# 检查 conda 安装(仅 conda 版本)
conda --version
# 应该显示 conda 版本信息

🔍 自动依赖检测

两个入口脚本(user-setup-zsh.shuser-setup-zsh-conda.sh)都具备完善的依赖项检测功能:

检测项目

  1. 命令检测:自动检测必需命令是否存在

    • curl:用于下载文件
    • tar:用于解压缩
    • zsh:目标 shell
    • bash:脚本运行环境
    • chsh:修改默认 shell
    • mkdirchmod:文件系统操作
  2. 网络连接检测

    • 测试网络连通性
    • 确保能够下载所需文件
  3. 磁盘空间检测

    • 纯 zsh 版本:至少 200MB
    • zsh + conda 版本:至少 500MB
  4. 目录权限检测

    • 检查 /home/share 目录权限
    • 检查 /etc/profile.d 目录权限

自动修复功能

  • 自动安装缺失依赖:支持多种包管理器

    • Debian/Ubuntu:使用 apt-get
    • RHEL/CentOS:使用 yum
    • Fedora:使用 dnf
  • 智能错误提示

    • 彩色输出:成功(绿色)、错误(红色)、警告(黄色)
    • 详细的错误信息和修复建议
    • 安装失败时提供手动安装指引

🔧 技术细节

文件结构说明

  • /home/share/:存放共享的安装包和配置文件

    • oh-my-zsh-rc.tar.gz:预配置的 Oh My Zsh 环境包
    • Miniconda3-py39_24.9.2-0-Linux-x86_64.sh:Miniconda 安装程序
  • /etc/profile.d/:存放用户登录时自动执行的脚本

    • setup-oh-my-zsh.shsetup-zsh-conda.sh
  • 用户目录配置

    • ~/.oh-my-zsh/:Oh My Zsh 框架目录
    • ~/.zshrc:zsh 配置文件
    • ~/.p10k.zsh:powerlevel10k 主题配置
    • ~/.condarc:conda 配置文件(仅 conda 版本)
    • ~/miniconda3/:Miniconda 安装目录(仅 conda 版本)

智能重复执行保护

系统使用标记文件防止重复配置:

  • ~/.oh-my-zsh_setup_done:标记 Oh My Zsh 配置完成
  • ~/.miniconda_setup_done:标记 Miniconda 安装完成

权限管理

  • 系统文件权限:755(可执行脚本)/ 644(数据文件)
  • 用户文件权限:755(目录)/ 644(配置文件)
  • 安全考虑:所有脚本都包含权限检查和错误处理

⚠️ 注意事项

安装前须知

  1. 备份重要数据:虽然脚本只配置新用户,建议备份重要的 shell 配置
  2. 网络连接:确保网络稳定,安装过程需要下载约 100MB 数据
  3. 磁盘空间:预留至少 500MB 空间用于安装
  4. 系统兼容性:在非 Debian/Ubuntu 系统上可能需要手动调整

常见问题

Q: 为什么需要 sudo 权限? A: 需要在系统级目录(/home/share//etc/profile.d/)创建文件,并修改用户的默认 shell。

Q: 如何卸载配置? A: 可以手动删除相关文件:

# 删除系统级文件
sudo rm -rf /home/share/oh-my-zsh-rc.tar.gz
sudo rm -rf /home/share/Miniconda3-py39_24.9.2-0-Linux-x86_64.sh
sudo rm -f /etc/profile.d/setup-*.sh

# 删除用户配置(针对特定用户)
rm -rf ~/.oh-my-zsh ~/.p10k.zsh ~/.condarc ~/miniconda3
rm -f ~/.oh-my-zsh_setup_done ~/.miniconda_setup_done
chsh -s /bin/bash  # 恢复默认 shell

Q: 配置过程中断了怎么办? A: 删除对应的标记文件,重新登录即可继续配置:

rm -f ~/.oh-my-zsh_setup_done ~/.miniconda_setup_done

Q: 如何自定义配置? A: 可以修改 ~/.zshrc~/.p10k.zsh 文件进行个性化定制。

🤝 贡献指南

欢迎提交 Issue 和 Pull Request 来改进这个项目!

About

No description, website, or topics provided.

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Languages