ZSH:在终端中隐藏计算机名称

105

在使用终端时,我如何隐藏提示中的计算机名称?

目前它显示了用户名和计算机名称,如下所示:

用户提示的iTerm截图

通过删除anwarchoukah@anwars-mbp,可以节省一些空间,因为我知道我的身份 :)。


1
请在http://superuser.com/上提出这个问题。那里您有更多的机会得到答案。 - AgeDeO
33
进入你的 ~/.oh-my-zsh/themes 文件夹,打开你正在使用的主题文件,注释掉包含 prompt_context 或类似内容的行。或者尝试从主题文件中删除 $USER@%m - Max Peng
4
谢谢@MaxPeng!你应该把它写成完整的答案... - Hari Honor
@MaxPeng 太棒了!非常感谢你) - Tusko Trush
谢谢@MaxPeng!这对我有用!最佳答案。 - makitocode
16个回答

188
尝试将export DEFAULT_USER=$USER添加到您的.zshrc文件中。

请注意,这将隐藏用户和主机名(提示符将为空)。这是因为只有在DEFAULT_USER变量与USER变量不同时,提示符才会被填充,因此将两者设置为相同将隐藏提示符。 - barell
7
你可以使用 $USER 替代 "$(whoami)" - Albert Vila Calvo
1
谢谢这个提示!我不再使用$USERwhoami,而是将其设置为我的正常登录用户,现在当我切换到另一个帐户时,只会显示用户@主机。这对我来说非常完美! - NeverCast
对于ZSH的fizsh前端,在文件~/.fizsh/fizsh-prompt.zsh中,我修改了包括_fizsh_prompt="%n@%m...的两行代码,改为_fizsh_prompt="%n... - Mario
自从20分钟前开始搜寻以来,这是我找到的最佳答案。谢谢。 - Sumit Kumar Saha

69

在 MacOS 10.15 Catalina 上:

  1. 在文本编辑器中打开文件 /private/etc/zshrc
  2. 找到注释:# Default prompt
  3. 修改以下这一行:PS1="%n@%m~ %& # "
  4. 保存文件。您将被提示输入密码以保存文件。
  5. 加载一个新的终端窗口。

例如,您可以:

  • 删除"%n@%m"以同时删除用户名和计算机名
  • 删除"%n"以删除用户名
  • 删除"%m"以删除计算机名

4
您需要使用sudo命令来修改该文件。我使用了“sudo nano /private/etc/zshrc”,输入密码后,您就可以在终端中编辑该文件了。成功保存更改后,请关闭旧终端并启动一个新终端,您将看到更改后的内容。 - Mark
如果您想要一个最小化的终端用户名,请按照上述步骤,在下面的#默认提示部分中使用以下内容:PS1 =“%#” - F. Morales
3
通过添加 PS1="%1d %& # ",将显示当前工作目录。 - Mohsin AR
5
最好在 ~/.zshrc 文件中完成此操作: export PS1="apple@apple-pro %1~ %# " 然后运行命令 source ~/.zshrc 以重新加载终端。 - BigRon

53
  1. 第一步。使用vim .zshrc命令打开您的.zshrc文件。

  2. 第二步。将光标移动到文件末尾。

  3. 粘贴以下代码:

注意缩进您的代码

prompt_context() {
  if [[ "$USER" != "$DEFAULT_USER" || -n "$SSH_CLIENT" ]]; then
    prompt_segment black default "%(!.%{%F{yellow}%}.)$USER"
  fi
}

EDIT - 解释此操作的作用

如果您 - 没有以默认用户登录 - 不在ssh客户端shell中

则此操作将从提示符中删除machine@user名称。

对于大多数人而言,这个操作不是必须的。但如果您经常ssh到其他计算机并打开多个终端(例如远程系统管理员类型的工作),那么它就非常有用,这样当您查看终端时,您就知道登录在哪台机器上并以哪个用户身份登陆了。

如果您不需要/管理此类复杂性,则使用其他答案之一来修改您的export PROMPT/PS1值即可。

* 警告 *

如果您正在使用自定义的shell或主题,则此操作可能无效,并且尽管提示符不再显示您的计算机和用户名,但它仍会持续抛出错误:

prompt_context:2: command not found: prompt_segment

例如,您可以看到使用这个(非常流行的)powerlevel9k,它不起作用。这是因为Powerlevel9k主题使用自己的魔法,您只需将命令添加到您的~/.zshrc文件中即可获得相同的结果,例如:

举例来说,你可以看到在这个(非常流行的)powerlevel9k 上它无法工作。这是因为 Powerlevel9k 主题使用了它自己的操作方式,你只需要在 ~/.zshrc 文件中增加一些命令即可获得相同的结果,例如:

POWERLEVEL9K_LEFT_PROMPT_ELEMENTS=(context)

更多信息请查看此处


3
谢谢。尝试了几个小时,你的解决方案帮了我很多。 - user1166240
1
我想删除主机名,只显示用户,这个方法很好用。 - unloco

28

打开.zshrc文件,找到包含export PS1export PROMPT的行。

移除用于主机名的变量,可能是%m或%M。

Archlinux wiki上的Zsh页面

你可以使用颜色,并在右侧显示提示(或一些信息)。


通过添加 PS1="%1d %& # " 可以显示当前的工作目录。 - Mohsin AR

16

我喜欢这种方法(在我的Mac上)

放入.zshrc文件中

PS1="%n$ "

终端窗口将会显示:

username$


13

只需将prompt_context() {}添加到.zshrc即可。


如果您以不同的用户登录,这将是有问题的,因为您将不知道您现在处于哪个用户中。 - disooqi
这其实非常完美,因为你仍然可以在终端上看到git分支,而不是修复单个值。 - fdevinar

10

很遗憾我所做的 .zshrc 的更改都不起作用。

我的机器是Mac M1,系统版本为Big Sur 11.4。这是最终生效的解决方案:

我打开了我所安装的ZSH主题所在的文件夹,并使用TextEdit编辑器打开了我的主题agnoster,然后修改了它选择要显示的配置,这个默认是$username@%m

注意:%m代表的是机器名。

以下是对比截图,黄色代表我的修改,绿色代表来自GitHub版本agnoster主题默认设置。

enter image description here

咦,没想到这个方法有效了!现在,只显示了机器名,就像我想要的那样。

enter image description here

希望这能帮到你。在许多链接和SOF帖子中,我只是点击了这个解决方案。


4

~/.zshrc文件中设置DEFAULT_USER为您的常规用户名。您可以通过在终端中执行whoami来获取确切的用户名值。 类似这样:

export DEFAULT_USER=username

4
如果您正在使用PowerLevel9k主题,则可以使用变量POWERLEVEL9K_CONTEXT_TEMPLATE来更改主机名和计算机名称的显示方式。
默认选项是%n@%m
  • %n->用户名
  • %m->机器名
要隐藏主机名:
  1. 使用sudo nano ~/.zshrc打开.zshrc文件

  2. 在.zshrc文件末尾添加行POWERLEVEL9K_CONTEXT_TEMPLATE="%n"

  3. 保存文件。


2
也许这会对你有所帮助 [ 打开 个人资料 => Shell ]
PS1="~ $: ";clear;

没有这样的选项。 - RamPrakash

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接