# script **Repository Path**: yz0812/script ## Basic Information - **Project Name**: script - **Description**: No description available - **Primary Language**: Unknown - **License**: Not specified - **Default Branch**: master - **Homepage**: None - **GVP Project**: No ## Statistics - **Stars**: 0 - **Forks**: 0 - **Created**: 2025-05-21 - **Last Updated**: 2026-04-21 ## Categories & Tags **Categories**: Uncategorized **Tags**: None ## README # Linux Shell 安装脚本 ## 项目简介 这是一个用于 Linux 环境的脚本仓库,当前包含两个安装脚本: - `install_zsh_enhancements.sh`:安装并配置 Zsh、Oh My Zsh 与常用插件 - `install_safe_rm.sh`:安装 `safe-rm`,写入常见系统路径保护配置,并为交互式 Bash 会话增加更安全的 `rm` 别名 ## 运行环境 - Linux - Bash - 需要具备安装软件包和修改 shell 的权限 ## 功能说明 ### 1. 安装依赖 脚本会检测并安装以下依赖: - `git` - `curl` - `wget` - `zsh` 目前支持的包管理器: - `yum` - `apt-get` ### 2. 安装 Oh My Zsh 脚本会根据用户选择优先使用以下镜像源之一: - Gitee - GitHub 当首选源不可用时,会自动尝试备用源。 ### 3. 安装插件 脚本当前会克隆以下自定义插件: - `zsh-syntax-highlighting` - `zsh-autosuggestions` ### 4. 更新 `.zshrc` 脚本会检查并更新 `~/.zshrc`,确保插件配置存在,并补充常用插件项。 会写入或补充的插件包括: - `git` - `history` - `z` - `docker` - `docker-compose` - `history-substring-search` - `zsh-syntax-highlighting` - `zsh-autosuggestions` 同时会补充自动补全初始化: ```sh autoload -Uz compinit && compinit -i ``` ### 5. 设置默认 shell 脚本会尝试使用 `chsh` 将当前用户的默认 shell 设置为 `zsh`。 注意: - 这一步通常需要重新登录后才会完全生效 - 如果 `chsh` 不可用,或 `zsh` 不在 `/etc/shells` 中,设置可能失败 - 如果失败,需要手动执行: ```sh chsh -s "$(command -v zsh)" ``` ### 6. 自动进入当前 zsh 会话 脚本执行完成后,如果当前是交互终端,并且当前 shell 还不是 `zsh`,会自动执行: ```sh exec "$(command -v zsh)" -l ``` 这意味着: - **当前终端**:脚本结束后会直接进入 `zsh` - **后续新终端/重新登录**:是否默认进入 `zsh` 取决于 `chsh` 是否成功 ## install_zsh_enhancements.sh 流程图 下图展示了脚本的安装主流程、删除回滚流程,以及依赖安装、配置写入、Shell 切换等关键步骤。 ![install_zsh_enhancements.sh 流程图](./docs/images/install_zsh_enhancements_flow_zh.png) ## 使用方法 ### 1. 添加执行权限 ```sh chmod +x install_zsh_enhancements.sh ``` ### 2. 执行脚本 ```sh ./install_zsh_enhancements.sh ``` ### 3. 按提示选择镜像源 脚本运行过程中会提示选择: - `1`:Gitee - `2`:GitHub 默认值为 `2`。 ## 常见问题 ### 默认 shell 没有生效 先确认脚本中 `chsh` 是否执行成功。 即使执行成功,也通常需要: - 注销后重新登录 - 或打开新的终端会话 ### 脚本执行后仍未进入 zsh 只有在交互终端中运行脚本时,才会自动进入当前 `zsh` 会话。 如果你是通过非交互方式执行脚本,这一步会被跳过。 ### 出现 `compaudit: insecure directories` 可以尝试: ```sh chmod -R 755 "$HOME/.oh-my-zsh/custom/plugins" && compinit -u ``` 或者: ```sh chmod -R 755 "$HOME/.oh-my-zsh" && compinit -u ``` ### 主题显示异常 某些 Oh My Zsh 主题可能需要额外安装 Powerline 字体。 ## 注意事项 - 该脚本面向 Linux 环境,不适用于原生 Windows Shell - 部分步骤可能需要 `sudo` - 脚本会修改 `~/.zshrc` - 脚本会尝试修改当前用户默认 shell ## safe-rm 脚本说明 ### 脚本用途 `install_safe_rm.sh` 用于安装 `safe-rm`,并完成以下操作: - 检查并在需要时安装 `cargo` - 下载并构建 `safe-rm 1.1.0` - 将可执行文件安装到 `/usr/local/bin/safe-rm` - 写入 `/etc/safe-rm.conf` 受保护路径配置(如不存在) - 在 `/etc/bashrc` 中追加 `alias rm="safe-rm -i"` - 在 `/etc/profile` 中追加 `/usr/local/bin` 到 `PATH` ### 运行要求 - Linux - Bash - 必须使用 `root` 用户执行 - 需要具备 `wget`、`tar`、`make` - 需要 `yum` 或 `dnf` 之一用于安装 `cargo`(若系统尚未安装) ### 使用方法 ```sh chmod +x install_safe_rm.sh ./install_safe_rm.sh ``` ### 注意事项 - 脚本会写入 `/usr/local/bin/safe-rm` - 脚本会修改 `/etc/bashrc`、`/etc/profile` - 脚本会创建或保留 `/etc/safe-rm.conf` - `rm` 别名仅对新的交互式 Bash 会话生效,非交互脚本仍使用系统原生 `rm` ## 贡献 如需扩展插件列表或调整安装逻辑,直接修改对应脚本: - `install_zsh_enhancements.sh` - `install_safe_rm.sh`