问题描述

Image 2

新装的ubuntu,这个终端的名称也太长了,主要是@后面这个设备名,所以我想把这玩意儿改短一些

解决办法

打开~/.bashrc文件,找到如下内容:

if [ "$color_prompt" = yes ]; then
PS1='${debian_chroot:+($debian_chroot)}\[\033[01;32m\]\u@\h\[\033[00m\]:\[\033[01;34m\]\w\[\033[00m\]\$ '
else
PS1='${debian_chroot:+($debian_chroot)}\u@\h:\w\$ '
fi
  • ${debian_chroot:+($debian_chroot)}:这是一个参数扩展。 如果设置了 debian_chroot 变量,则将其值包含在提示符中,并用括号括起来。 这通常用于在 chroot 环境中指示当前环境。 如果 debian_chroot 未设置,则此部分不显示任何内容。
    • 用echo命令输出:echo "${debian_chroot:+($debian_chroot)}"
Image 3
  • \u:用户的用户名(例如,”diraw”)
  • @:一个字面字符 “@”
  • \h:主机名(hostname)的第一个部分,即第一个 . 之前的字符串。 例如,如果主机名是 mycomputer.example.com,则 \h 将显示 mycomputer
    • 在终端输出主机名:hostname
Image 4
  • ::一个字面字符 “:”
  • \w:当前工作目录的完整路径
  • \$:如果当前用户是 root 用户,则显示 #;否则,显示 $

我这里修改我的hostname即可

1、直接 sudo hostnamectl set-hostname 新主机名

2、然后打开/etc/hosts,把第二行名称改一下

Image 5

3、重启电脑

为什么需要同时修改这两个地方?

1、sudo hostnamectl set-hostname 新主机名 → 修改系统的静态主机名(存储在 /etc/hostname
2、修改 /etc/hosts → 确保本地域名解析正确,避免某些程序(如 sudo、ping、ssh)出现警告或错误

代码学习

PS1 代表 “Prompt String”,是一个 Bash shell 环境变量,它定义了命令提示符的格式。简单来说,PS1 决定了你在终端中看到的内容,即你输入命令之前显示的字符串。

Bash 还有其他提示符变量,如 PS2(用于多行命令)、PS3(用于 select 循环)和 PS4(用于调试)。

PS1 字符串中可以使用许多特殊字符(也称为转义序列),它们会被 Bash 解释并替换为实际值。 一些常见的特殊字符包括:

  • \u:用户名
  • \h:主机名(hostname)的第一个部分
  • \H:完整的主机名
  • \w:当前工作目录的完整路径(~ 代表用户主目录)
  • \W:当前工作目录的basename(最后一个目录名)
  • \$:如果当前用户是 root 用户,则显示 #;否则,显示 $
  • \d:当前日期(例如,”Tue May 9”)
  • \t:当前时间(24 小时制,HH:MM:SS)
  • \s:shell 的名称