Git Bash + Zsh + Powerlevel10k 集成方案 (跨平台)
📌 概述
本文旨在 Windows 平台上基于 Git Bash 构建一套类 Unix 的高效终端环境。通过集成 Zsh (Z Shell)、Oh My Zsh 框架及 Powerlevel10k 主题,解决原生 Git Bash 功能单一、缺乏语法高亮与自动补全等痛点,并实现跨平台(Windows/Linux/Android)的配置统一。
如果目标平台是windows,则需要使用gitbash,不建议用msys2作为主要的bash!因为windwos上配置的环境变量在msys2没法使用需要重新配置,容易出现一些问题。但是gitbash本身不支持一些包命令操作和一些快捷的命令,所以需要提前安装好msys2,msys2自带了pacman包管理器,可通过
pacman -Sy tree安装tree工具等…,至于如何在gitbash上使用msys2自带的pacman就很简单了,只需要在windows上配置msys2的环境变量,可以通过这个软件rapid environment.exe配置,例如D:\msys2\mingw64\bin以及D:\msys2\usr\bin路径。windwos gitbash在执行以下脚本前,建议先把上述环境准备好,然后参考这篇文章
⚙️Widnows Gitbash 环境配置简化流程
下载zsh.pkg.tar.zst 打开后继续打开会看到有文件夹等文件,解压放置Gitbash根目录,例如
D:\Program Files\Git系统用户根目录创建文件
C:/Users/{你的用户名}/.bashrc,另外可以额外创建一份.bash_profile并输入以下内容1
2
3
4Launch Zsh
if [ -t 1 ]; then
exec zsh
fi
🚀 方案一:自动化部署脚本 (推荐)
为简化繁琐的依赖安装与环境配置,提供以下全平台通用 Shell 脚本。该脚本支持环境检测、包管理器自动识别、Oh My Zsh 及核心插件的一键安装。
使用方法
此脚本支持 Android Mac Linux Windows
- 保存下方代码为
install_zsh.sh。 - 在 Git Bash 或其他平台目终端中执行:
chmod +x install_zsh.sh && ./install_zsh.sh或者sh install_zsh.sh1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
# 定义颜色
GREEN='\033[0;32m'
RED='\033[0;31m'
YELLOW='\033[1;33m'
BLUE='\033[0;34m'
NC='\033[0m' # No Color
echo -e "${YELLOW}========================================${NC}"
echo -e "${YELLOW} Zsh + OMZ + QuickShell 配置脚本 ${NC}"
echo -e "${YELLOW}========================================${NC}"
# ==========================================
# 0. 环境与包管理器检测
# ==========================================
OS_TYPE=$(uname -o 2>/dev/null || uname -s)
INSTALL_CMD=""
UPDATE_CMD=""
SUDO=""
detect_pm_linux_mac() {
echo -e "${BLUE}检测到 Linux/Mac 环境,请选择包管理器:${NC}"
echo "1) pkg (Termux)"
echo "2) apt (Debian/Ubuntu/Kali)"
echo "3) choco (Linux?)"
echo "4) pacman (Arch/Manjaro)"
echo "5) brew (macOS/Linux)"
read -p "请输入选项 [1-5]: " pm_choice
case $pm_choice in
1) INSTALL_CMD="pkg install -y"; UPDATE_CMD="pkg update -y";;
2) INSTALL_CMD="apt install -y"; UPDATE_CMD="apt update -y"; SUDO="sudo";;
3) INSTALL_CMD="choco install -y"; UPDATE_CMD="choco upgrade all -y";;
4) INSTALL_CMD="pacman -S --noconfirm"; UPDATE_CMD="pacman -Sy"; SUDO="sudo";;
5) INSTALL_CMD="brew install"; UPDATE_CMD="brew update";;
*) echo "无效,默认 apt"; INSTALL_CMD="apt install -y"; UPDATE_CMD="apt update -y"; SUDO="sudo";;
esac
}
detect_pm_windows() {
echo -e "${BLUE}检测到 Windows 环境,请选择包管理器:${NC}"
echo "1) choco"
echo "2) pacman (MSYS2)"
read -p "请输入选项 [1-2]: " pm_choice
case $pm_choice in
1) INSTALL_CMD="choco install -y"; UPDATE_CMD="choco upgrade all -y";;
2) INSTALL_CMD="pacman -S --noconfirm"; UPDATE_CMD="pacman -Sy";;
*) echo "无效,默认 choco"; INSTALL_CMD="choco install -y"; UPDATE_CMD="choco upgrade all -y";;
esac
}
# --- 开始 OS 检测 ---
case "$OS_TYPE" in
*Android*)
echo -e "${GREEN}-> 检测到 Android 系统 (Termux)${NC}"
INSTALL_CMD="pkg install -y"
UPDATE_CMD="pkg update -y"
;;
*Msys*|*Cygwin*|*Mingw*|*Windows*)
detect_pm_windows
;;
*)
detect_pm_linux_mac
;;
esac
# ==========================================
# 1. 安装基础软件
# ==========================================
echo -e "${GREEN}-> 正在更新源并安装 zsh, git, curl, lsd, bat, fzf...${NC}"
# 执行更新
eval "$SUDO $UPDATE_CMD"
# 执行安装
echo -e "执行安装命令: $SUDO $INSTALL_CMD zsh curl git lsd bat fzf"
eval "$SUDO $INSTALL_CMD zsh curl git lsd bat fzf"
# --- 修复点 1: 刷新命令缓存 ---
# 防止刚安装完 zsh,shell 缓存里还认为没有 zsh
hash -r 2>/dev/null
# 特殊处理:Ubuntu 下 bat 可能叫 batcat
# --- 修复点 2: 兼容性写法 ---
if command -v batcat > /dev/null 2>&1 && ! command -v bat > /dev/null 2>&1; then
echo "检测到 batcat,创建 bat 别名目录..."
mkdir -p ~/.local/bin
ln -s $(which batcat) ~/.local/bin/bat
export PATH=$HOME/.local/bin:$PATH
fi
# 检查 Zsh 是否安装成功
# --- 修复点 3: 使用 > /dev/null 2>&1 替代 &>,兼容 dash ---
if ! command -v zsh > /dev/null 2>&1; then
echo -e "${RED}错误:Zsh 安装失败!${NC}"
echo "调试信息: 尝试手动运行 'zsh --version' 查看是否安装。"
exit 1
fi
# ==========================================
# 2. 用户交互菜单 (安装模式)
# ==========================================
echo -e "请选择安装模式:"
echo -e "${GREEN}1)${NC} ${RED}全新安装${NC} (删除旧配置)"
echo -e "${GREEN}2)${NC} ${BLUE}保留配置,仅更新${NC}"
echo -e "${GREEN}3)${NC} ${YELLOW}保留配置,强制重装插件${NC}"
read -p "请输入选项 [1-3] (其他键退出): " choice
CLEAN_INSTALL=false
FORCE_RECLONE=false
SKIP_ZSHRC=false
case "$choice" in
1) CLEAN_INSTALL=true ;;
2) SKIP_ZSHRC=true; FORCE_RECLONE=false ;;
3) SKIP_ZSHRC=true; FORCE_RECLONE=true ;;
*) exit 1 ;;
esac
# ==========================================
# 3. 处理配置文件 (.zshrc)
# ==========================================
# 定义 Quick Shell 目录,适配非 Android 环境
if [[ "$OS_TYPE" == *"Android"* ]]; then
TARGET_DIR="/sdcard/0.file/shell"
else
TARGET_DIR="$HOME/quick_shell"
fi
if [ "$CLEAN_INSTALL" = true ]; then
echo -e "${GREEN}-> 清理旧配置...${NC}"
rm -rf ~/.zshrc ~/.oh-my-zsh
echo -e "${GREEN}-> 创建 Quick Shell 目录: ${TARGET_DIR}...${NC}"
mkdir -p "$TARGET_DIR"
echo -e "${GREEN}-> 生成 ~/.zshrc...${NC}"
cat > ~/.zshrc << EOF
export ZSH="\$HOME/.oh-my-zsh"
ZSH_THEME="powerlevel10k/powerlevel10k"
plugins=(git zsh-syntax-highlighting zsh-autosuggestions z extract fzf)
source \$ZSH/oh-my-zsh.sh
# 常用别名
alias ls=lsd
alias ll='lsd -l'
alias la='lsd -a'
# Quick Shell 自动加载
QS_DIR="${TARGET_DIR}"
if [ -d "\$QS_DIR" ]; then
for script in "\$QS_DIR"/*; do
if [ -f "\$script" ]; then
filename=\$(basename "\$script")
alias_name="\${filename%.*}"
alias "\$alias_name"="bash '\$script'"
fi
done
fi
EOF
else
echo -e "${BLUE}-> 跳过 .zshrc 生成。${NC}"
fi
# ==========================================
# 4. 安装/更新 Oh My Zsh & 插件
# ==========================================
echo -e "${GREEN}-> 处理 Oh My Zsh...${NC}"
export RUNZSH=no
export KEEP_ZSHRC=yes
sh -c "$(curl -fsSL https://raw.githubusercontent.com/ohmyzsh/ohmyzsh/master/tools/install.sh)"
ZSH_CUSTOM=${ZSH_CUSTOM:-$HOME/.oh-my-zsh/custom}
install_plugin() {
local url=$1
local path=$2
if [ -d "$path" ]; then
if [ "$FORCE_RECLONE" = true ] || [ "$CLEAN_INSTALL" = true ]; then
rm -rf "$path"
git clone --depth=1 "$url" "$path"
else
git -C "$path" pull || echo "更新失败"
fi
else
git clone --depth=1 "$url" "$path"
fi
}
install_plugin "https://github.com/romkatv/powerlevel10k.git" "${ZSH_CUSTOM}/themes/powerlevel10k"
install_plugin "https://github.com/zsh-users/zsh-syntax-highlighting" "${ZSH_CUSTOM}/plugins/zsh-syntax-highlighting"
install_plugin "https://github.com/zsh-users/zsh-autosuggestions" "${ZSH_CUSTOM}/plugins/zsh-autosuggestions"
# ==========================================
# 5. 结尾
# ==========================================
echo -e "${GREEN}-> 设置默认 Shell...${NC}"
if [[ "$OS_TYPE" == *"Android"* ]]; then
chsh -s zsh
else
# Linux 上尝试自动切换,如果失败提示手动
if which zsh > /dev/null 2>&1; then
chsh -s $(which zsh) || echo -e "${YELLOW}提示:可能需要手动输入密码或运行: chsh -s $(which zsh)${NC}"
fi
fi
echo -e "${GREEN}安装完成!Quick Shell 目录: ${TARGET_DIR}${NC}"
exec zsh -l
🛠️ 方案二:手动分步部署 (Windows Git Bash)
若需深入控制安装细节,可按以下步骤手动配置。
1. 前置环境准备
| 组件 | 作用 | 获取/配置方式 |
|---|---|---|
| Git Bash | 提供基础 Bash 环境 | Git for Windows 官网 |
| MSYS2 | 提供 Pacman 包管理 | MSYS2 官网 |
| 环境变量 | 联通 Git Bash 与 MSYS2 | 将 MSYS2 的 \usr\bin 和 \mingw64\bin 加入 Windows PATH |
注意:配置环境变量后,Git Bash 才能直接识别
pacman、zsh等命令。
2. 核心组件安装
在配置好 PATH 的 Git Bash 中执行:
1 | # 1. 更新包管理器源 |
3. 部署 Oh My Zsh 框架
1 | # 使用 curl 安装 |
4. 安装核心插件
1 | # 1. Powerlevel10k 主题 |
cc 配置文件详解
需要修改两个核心文件以完成环境集成。
1. ~/.bash_profile (入口引导)
此配置用于在打开 Git Bash 时自动切换至 Zsh 环境。
1 | # 加载 .bashrc (如果存在) |
2. ~/.zshrc (核心配置)
集成环境修复、插件管理及网络代理功能。
1 | # --- Powerlevel10k 瞬时提示符 (必须置顶) --- |
💻 开发环境集成
IDE 集成 (IntelliJ IDEA / VSCode)
为确保 IDE 内置终端正确加载 Zsh 配置,需修改 Shell 启动参数。
- Shell path:
"D:\Program Files\Git\bin\bash.exe"(根据实际安装路径调整) - Arguments:
-l -c zsh-l(login): 强制作为登录 Shell 启动,确保加载 Profile。-c zsh: 直接执行 zsh 命令。
脚本集成 (.bat 启动)
若需通过 Windows 批处理脚本调用 Zsh 环境执行任务(如启动服务脚本):
1 | @echo off |
📱 附录:Android Termux 配置
Termux 环境配置相对精简,主要差异在于路径与别名。
~/.zshrc (Termux 精简版):
1 | export ZSH="$HOME/.oh-my-zsh" |
