158 lines
5.6 KiB
Bash
158 lines
5.6 KiB
Bash
#!/bin/bash
|
||
|
||
# 步骤0: 检测操作系统
|
||
OS_ID=""
|
||
if [ -f /etc/os-release ]; then
|
||
source /etc/os-release # 加载 OS 变量
|
||
OS_ID=$ID
|
||
fi
|
||
|
||
echo "检测到的操作系统: $OS_ID"
|
||
|
||
# 步骤1: 更新系统(根据 OS 使用不同的包管理器)
|
||
echo "步骤1: 更新系统..."
|
||
if [[ "$OS_ID" == "ubuntu" || "$OS_ID" == "debian" ]]; then
|
||
sudo apt update && sudo apt upgrade -y
|
||
elif [[ "$OS_ID" == "centos" || "$OS_ID" == "rhel" ]]; then
|
||
if command -v dnf &> /dev/null; then # CentOS 8+
|
||
sudo dnf update -y
|
||
elif command -v yum &> /dev/null; then # CentOS 7
|
||
sudo yum update -y
|
||
else
|
||
echo "错误: 未找到包管理器 (yum 或 dnf)。脚本无法继续。"
|
||
exit 1
|
||
fi
|
||
else
|
||
echo "错误: 不支持的操作系统 ($OS_ID)。仅支持 Ubuntu/Debian 和 CentOS/RHEL。"
|
||
exit 1
|
||
fi
|
||
|
||
if [ $? -ne 0 ]; then
|
||
echo "错误: 系统更新失败。请检查网络或权限。"
|
||
exit 1
|
||
fi
|
||
|
||
# 步骤1.5: 设置时区为东八区 (Asia/Shanghai)
|
||
echo "步骤1.5: 设置时区为东八区 (Asia/Shanghai)..."
|
||
if command -v timedatectl &> /dev/null; then # 检查 timedatectl 是否可用
|
||
sudo timedatectl set-timezone Asia/Shanghai
|
||
if [ $? -eq 0 ]; then
|
||
echo "成功: 时区已设置为 Asia/Shanghai。"
|
||
timedatectl # 显示当前时区以验证
|
||
else
|
||
echo "警告: 时区设置失败。请手动运行 'sudo timedatectl set-timezone Asia/Shanghai'。"
|
||
fi
|
||
else
|
||
echo "警告: timedatectl 命令不可用。时区设置跳过。请手动配置时区。"
|
||
fi
|
||
|
||
# 步骤2: 安装必要工具和包
|
||
echo "步骤2: 安装中文相关包..."
|
||
if [[ "$OS_ID" == "ubuntu" || "$OS_ID" == "debian" ]]; then
|
||
sudo apt install -y locales fonts-wqy-zenhei manpages-zh # 移除 language-pack-zh-hans
|
||
if [ $? -ne 0 ]; then
|
||
echo "警告: 某些包安装失败 (如 language-pack-zh-hans 不可用)。将继续执行其他步骤。"
|
||
fi
|
||
elif [[ "$OS_ID" == "centos" || "$OS_ID" == "rhel" ]]; then
|
||
# 先安装 EPEL 仓库
|
||
if command -v dnf &> /dev/null; then
|
||
sudo dnf install -y epel-release
|
||
sudo dnf install -y glibc-common wqy-zenhei-fonts
|
||
elif command -v yum &> /dev/null; then
|
||
sudo yum install -y epel-release
|
||
sudo yum install -y glibc-common wqy-zenhei-fonts
|
||
fi
|
||
if [ $? -ne 0 ]; then
|
||
echo "错误: EPEL 或包安装失败。请手动检查。"
|
||
exit 1 # CentOS 分支保持严格
|
||
fi
|
||
fi
|
||
|
||
# 步骤2.5: 检测并安装 Vim,并修复中文乱码
|
||
echo "步骤2.5: 检测并安装 Vim,并修复中文乱码..."
|
||
if ! command -v vim &> /dev/null; then # 检查 Vim 是否已安装
|
||
echo "Vim 未安装,正在安装..."
|
||
if [[ "$OS_ID" == "ubuntu" || "$OS_ID" == "debian" ]]; then
|
||
sudo apt install -y vim
|
||
elif [[ "$OS_ID" == "centos" || "$OS_ID" == "rhel" ]]; then
|
||
if command -v dnf &> /dev/null; then
|
||
sudo dnf install -y vim
|
||
elif command -v yum &> /dev/null; then
|
||
sudo yum install -y vim
|
||
fi
|
||
fi
|
||
if [ $? -ne 0 ]; then
|
||
echo "警告: Vim 安装失败。请手动安装 (sudo apt/yum/dnf install vim)。"
|
||
else
|
||
echo "成功: Vim 已安装。"
|
||
fi
|
||
else
|
||
echo "Vim 已安装。"
|
||
fi
|
||
|
||
# 修复 Vim 中文乱码:修改 ~/.vimrc
|
||
if command -v vim &> /dev/null; then # 确保 Vim 已可用
|
||
VIMRC_FILE=~/.vimrc
|
||
if [ ! -f "$VIMRC_FILE" ]; then # 如果文件不存在,创建它
|
||
touch "$VIMRC_FILE"
|
||
echo "\" 新创建的 Vim 配置文件" > "$VIMRC_FILE"
|
||
fi
|
||
# 添加或更新配置
|
||
if grep -q "set encoding=utf-8" "$VIMRC_FILE"; then
|
||
echo "Vim 配置中已包含 encoding 设置。"
|
||
else
|
||
echo "set encoding=utf-8" >> "$VIMRC_FILE"
|
||
echo "set fileencodings=utf-8,ucs-bom,gbk,gb18030,gb2312,big5" >> "$VIMRC_FILE"
|
||
echo "成功: 已添加 Vim 中文支持配置。"
|
||
fi
|
||
if [ $? -ne 0 ]; then
|
||
echo "警告: Vim 配置修改失败。请手动编辑 ~/.vimrc。"
|
||
fi
|
||
else
|
||
echo "警告: Vim 不可用,无法修复中文乱码。"
|
||
fi
|
||
|
||
# 步骤3: 生成和配置 Locale
|
||
echo "步骤3: 生成中文 Locale..."
|
||
if [[ "$OS_ID" == "ubuntu" || "$OS_ID" == "debian" ]]; then
|
||
sudo locale-gen zh_CN.UTF-8
|
||
sudo update-locale LANG=zh_CN.UTF-8 LC_ALL=zh_CN.UTF-8
|
||
elif [[ "$OS_ID" == "centos" || "$OS_ID" == "rhel" ]]; then
|
||
sudo localedef -i zh_CN -f UTF-8 zh_CN.UTF-8
|
||
if [ $? -eq 0 ]; then
|
||
echo "export LANG=zh_CN.UTF-8" | sudo tee -a /etc/locale.conf
|
||
echo "export LC_ALL=zh_CN.UTF-8" | sudo tee -a /etc/locale.conf
|
||
else
|
||
echo "错误: Locale 生成失败。"
|
||
exit 1
|
||
fi
|
||
fi
|
||
|
||
if [ $? -ne 0 ]; then
|
||
echo "错误: 更新系统 Locale 失败。"
|
||
exit 1
|
||
fi
|
||
|
||
# 步骤4: 设置用户环境变量
|
||
echo "步骤4: 配置用户环境变量..."
|
||
echo 'export LANG=zh_CN.UTF-8' >> ~/.bashrc
|
||
echo 'export LC_ALL=zh_CN.UTF-8' >> ~/.bashrc
|
||
source ~/.bashrc # 立即应用更改
|
||
if [ $? -ne 0 ]; then
|
||
echo "警告: 环境变量设置可能未完全生效。请重新登录 SSH。"
|
||
fi
|
||
|
||
# 步骤5: 验证配置
|
||
echo "步骤5: 验证中文语言环境、时区和 Vim 配置..."
|
||
locale # 显示当前 Locale 设置
|
||
timedatectl # 显示当前时区设置
|
||
if locale | grep -q "zh_CN.UTF-8"; then
|
||
echo "成功: 中文语言环境配置完成!"
|
||
else
|
||
echo "警告: 配置可能未完全成功。请检查输出并手动验证。"
|
||
fi
|
||
|
||
echo "提示: 请重新登录 SSH 会话以确保所有变化生效,包括时区和 Vim 设置。"
|
||
|
||
echo "脚本执行完毕。如果有问题,请查看系统日志 (e.g., sudo cat /var/log/syslog | grep locale 或 sudo cat /var/log/messages | grep vim)。"
|