在准备环境前提交次全部更改。

This commit is contained in:
Neo
2026-02-19 08:35:13 +08:00
parent ded6dfb9d8
commit 4eac07da47
1387 changed files with 6107191 additions and 33002 deletions

View File

@@ -0,0 +1,98 @@
"""
一次性脚本:将 Windows 系统级默认 shell 切换为 PowerShell 7
1. Windows Terminal 默认 profile → pwsh.exe
2. OpenSSH DefaultShell 注册表 → pwsh.exe
3. 系统 ComSpec 环境变量不动(保持 cmd.exe 兼容)
"""
import json
import os
import subprocess
import winreg
PWSH7 = r"C:\Program Files\PowerShell\7\pwsh.exe"
# ── 1. Windows Terminal settings.json ──
wt_settings = os.path.join(
os.environ["LOCALAPPDATA"],
"Packages",
"Microsoft.WindowsTerminal_8wekyb3d8bbwe",
"LocalState",
"settings.json",
)
wt_preview = os.path.join(
os.environ["LOCALAPPDATA"],
"Packages",
"Microsoft.WindowsTerminalPreview_8wekyb3d8bbwe",
"LocalState",
"settings.json",
)
# Windows Terminal 的 PowerShell 7 profile GUID官方固定值
PWSH7_GUID = "{574e775e-4f2a-5b96-ac1e-a2962a402336}"
for path in [wt_settings, wt_preview]:
if os.path.isfile(path):
with open(path, "r", encoding="utf-8") as f:
content = f.read()
# 去掉 JSON 注释行Windows Terminal 允许 // 注释)
lines = []
for line in content.splitlines():
stripped = line.lstrip()
if stripped.startswith("//"):
continue
lines.append(line)
clean = "\n".join(lines)
try:
cfg = json.loads(clean)
except json.JSONDecodeError:
print(f"跳过JSON 解析失败): {path}")
continue
cfg["defaultProfile"] = PWSH7_GUID
with open(path, "w", encoding="utf-8") as f:
json.dump(cfg, f, indent=4, ensure_ascii=False)
print(f"已更新 Windows Terminal defaultProfile: {path}")
else:
print(f"未找到 Windows Terminal 配置: {path}")
# ── 2. OpenSSH DefaultShell 注册表 ──
try:
key = winreg.CreateKeyEx(
winreg.HKEY_LOCAL_MACHINE,
r"SOFTWARE\OpenSSH",
0,
winreg.KEY_SET_VALUE,
)
winreg.SetValueEx(key, "DefaultShell", 0, winreg.REG_SZ, PWSH7)
winreg.CloseKey(key)
print(f"已设置 OpenSSH DefaultShell → {PWSH7}")
except PermissionError:
print("OpenSSH 注册表写入需要管理员权限,跳过(可手动以管理员运行)")
except Exception as e:
print(f"OpenSSH 注册表写入失败: {e}")
# ── 3. 将 pwsh.exe 所在目录加到 PATH 最前面(如果不在的话)──
pwsh_dir = os.path.dirname(PWSH7)
current_path = os.environ.get("PATH", "")
if pwsh_dir.lower() not in current_path.lower():
# 写入用户级 PATH
try:
key = winreg.OpenKeyEx(
winreg.HKEY_CURRENT_USER,
r"Environment",
0,
winreg.KEY_READ | winreg.KEY_SET_VALUE,
)
user_path, _ = winreg.QueryValueEx(key, "Path")
if pwsh_dir.lower() not in user_path.lower():
new_path = pwsh_dir + ";" + user_path
winreg.SetValueEx(key, "Path", 0, winreg.REG_EXPAND_SZ, new_path)
print(f"已将 {pwsh_dir} 添加到用户 PATH 最前面")
else:
print(f"{pwsh_dir} 已在用户 PATH 中")
winreg.CloseKey(key)
except Exception as e:
print(f"PATH 更新失败: {e}")
else:
print(f"{pwsh_dir} 已在 PATH 中")
print("\n完成。新开的终端窗口将默认使用 PowerShell 7。")