◆

Git Bash 隐藏用户名和计算机名的方法

2023-07-24 05:350

windows 下解决方法

  • 转至 C:\Program Files\Git\etc\profile.d\ 文件夹
  • 找到并打开 git-prompt.sh 文件在您最喜欢的文本编辑器中
  • 转到行号 15
  • 用 PS1="$PS1"'' 替换整行
  • 就是这样。启动/重新启动 Git Bash,您应该会看到用户名和计算机名称消失了。

如图所示

git bash隐藏用户名计算机名

那一行原本是什么

git-prompt.sh 第 15 行前后的原始内容大致是这样:

PS1="$PS1"'\[\033[32m\]'       # 绿色
PS1="$PS1"'\u@\h '             # user@host
PS1="$PS1"'\[\033[35m\]'       # 品红
PS1="$PS1"'$MSYSTEM '          # MINGW64
PS1="$PS1"'\[\033[33m\]'       # 黄色
PS1="$PS1"'\w'                 # 当前目录

\u 是当前用户名,\h 是主机名(\H 是完整域名)。把那一行换成 PS1="$PS1"'' 就是拼接一个空字符串,等于什么都不加,用户名和主机名自然就没了。

这里选择「替换成空拼接」而不是直接删掉整行,是因为保留行号能让后续对照文档、以及 Git 升级后比对差异更方便。功能上和删掉这一行完全等价。

提示符各段的含义

改之前先看懂这些转义序列,就能按自己需要裁剪:

转义含义
\u当前用户名
\h主机名(第一个点之前的部分)
\H完整主机名
\w当前工作目录完整路径(家目录显示为 ~)
\W当前目录的最后一段
\n换行
\$root 显示 #,普通用户显示 $
\t24 小时制时间
\[ \]包裹非打印字符(颜色码),不能省

\[ 和 \] 那对括号最容易被忽略。它们告诉 bash「这段不占显示宽度」,漏了会导致长命令换行时光标位置计算错误,编辑历史命令时光标乱跳。所以自己拼颜色一定要包好。

我常用的精简配置

路径太长时 \w 会占掉半屏,换成 \W 只显示当前目录名清爽很多。加个换行让命令输入区独占一行也很实用:

# 直接在 git-prompt.sh 末尾覆盖 PS1(放最后,覆盖前面的定义)
PS1='\[\033[33m\]\W\[\033[0m\]'   # 黄色,只显示当前目录名
PS1="$PS1"'\[\033[36m\]`__git_ps1`\[\033[0m\]'  # 青色分支名
PS1="$PS1"'\n\$ '                 # 换行 + 提示符

__git_ps1 是 Git 自带的函数,输出当前分支名(形如 (master))。Git Bash 默认已经加载了它,直接用。想让它额外显示工作区状态,在调用前设置这些环境变量:

export GIT_PS1_SHOWDIRTYSTATE=1      # 有未提交改动显示 *,暂存显示 +
export GIT_PS1_SHOWSTASHSTATE=1      # 有 stash 显示 $
export GIT_PS1_SHOWUNTRACKEDFILES=1  # 有未跟踪文件显示 %
export GIT_PS1_SHOWUPSTREAM="auto"   # 和上游的领先/落后关系,显示 < > =

GIT_PS1_SHOWUNTRACKEDFILES 在大仓库里会明显拖慢提示符(每次回车都要扫一遍未跟踪文件),仓库大就别开。

改系统文件的问题

直接改 C:\Program Files\Git\etc\profile.d\git-prompt.sh 有三个实际麻烦:

  1. 需要管理员权限,Program Files 下不能直接写。
  2. Git 升级会覆盖它,改动丢失,得重新改一遍。
  3. 只对这台机器生效,换电脑要重做。

更好的做法是改用户级配置,~/.bashrc 在 Git Bash 里对应 C:\Users\<你>\.bashrc。它在系统配置之后加载,所以能覆盖 PS1:

# ~/.bashrc
export GIT_PS1_SHOWDIRTYSTATE=1

PS1='\[\033[33m\]\W\[\033[0m\]'
PS1="$PS1"'\[\033[36m\]`__git_ps1`\[\033[0m\]'
PS1="$PS1"'\n\$ '

Git Bash 默认读的是 ~/.bash_profile,如果 .bashrc 没生效,在 .bash_profile 里加一句引入:

# ~/.bash_profile
[ -f ~/.bashrc ] && . ~/.bashrc

这样配的好处是文件在用户目录下,可以纳入 dotfiles 版本管理,换机器直接拷过去,Git 升级也不受影响。

macOS / Linux 上的等价做法

同样是改 PS1,只是配置文件位置不同。zsh(macOS 现在的默认 shell)用的是 PROMPT 而不是 PS1,转义语法也不一样:

# ~/.zshrc
# %1~ 只显示当前目录,%~ 显示完整路径
PROMPT='%F{yellow}%1~%f %F{cyan}${vcs_info_msg_0_}%f
%# '

# 启用 zsh 自带的版本控制信息
autoload -Uz vcs_info
precmd() { vcs_info }
zstyle ':vcs_info:git:*' formats '(%b)'
setopt PROMPT_SUBST

zsh 里 %F{color} / %f 是颜色开关,%1~ 是路径最后一段,%# 相当于 bash 的 \$。不需要 \[ \] 那套包裹,zsh 自己能正确计算宽度。

为什么会想隐藏

主要是录屏、截图、写文档的时候——Administrator@DESKTOP-A1B2C3 这种前缀既占地方又暴露机器信息。做技术分享时提示符里只留目录和分支,读者的注意力也更集中在命令本身上。

临时隐藏一次不用改配置文件,当前会话里直接设就行:

PS1='\$ '

关掉终端就恢复原样。

💬留言板0

还没有留言,来发表第一条吧~

PAGE LOAD / LIVEGit Bash 隐藏用户名和计算机名的方法加载中