Shell 提示符(PS1)配置 文章封面

Shell 提示符(PS1)配置

适用场景:开发板 rootfs 定制,让终端提示符显示设备名、路径等有用信息,便于区分多个开发板或调试会话。


什么是 PS1

PS1(Prompt String 1)是 Shell 的主提示符环境变量,决定了每次等待输入时显示的内容。

默认嵌入式系统提示符通常只有一个 #,不直观。通过修改 PS1,可以让提示符携带更多上下文信息:

# 默认(不直观)
#

# 修改后(清晰)
Imx6ull@root:/home#


常用转义符

转义符含义示例输出
u当前用户名root
h主机名(短,不含域名)Imx6ull
H完整主机名Imx6ull.local
w当前工作目录(完整路径)/home/dev
W当前目录名(最后一级)dev
$root 显示 #,普通用户显示 $#
n换行—
t当前时间(HH:MM:SS)14:23:01
字面反斜杠

临时修改(当前会话有效)

export PS1='Imx6ull@root# '

关闭终端或重启后失效。适合临时测试格式是否正确。


永久修改

方法一:修改 /etc/profile(推荐,对所有用户生效)

vi /etc/profile

在文件末尾追加:

export PS1='Imx6ull@u:w# '

保存后立即生效:

source /etc/profile

方法二:修改 /root/.bashrc(仅对 root 用户的 bash 生效)

vi /root/.bashrc

追加同样的内容即可。

⚠️ Busybox ash 注意:嵌入式系统通常使用 Busybox 的 ash 而非完整的 bash。ash 不读取 .bashrc,只读取 /etc/profile,所以推荐使用方法一。


实用示例

最简洁(只显示设备名和用户)

export PS1='Imx6ull@root# '
# 输出:Imx6ull@root#

带当前路径

export PS1='Imx6ull@u:w# '
# 输出:Imx6ull@root:/home#

用变量读取主机名(推荐)

主机名在 /etc/hostname 里,h 会自动读取,不需要硬编码:

export PS1='h@u:W# '
# 如果 hostname 是 Imx6ull,输出:Imx6ull@root:home#

多行提示符(路径长时不挤)

export PS1='h@u:wn# '
# 输出:
# Imx6ull@root:/very/long/path
# #


配置主机名

提示符里的 h 取自系统主机名,可以单独配置:

临时修改

hostname Imx6ull

永久修改

# 方法一:直接写文件(多数嵌入式系统通用)
echo "Imx6ull" > /etc/hostname

# 方法二:修改 /etc/init.d/rcS 或 /etc/rc.local(视 rootfs 而定)
# 在启动脚本里加:hostname Imx6ull

重启后 h 就会显示 Imx6ull。


添加颜色(可选)

彩色提示符在调试时很有用,但需要终端支持 ANSI 转义码(大多数串口工具如 minicom、picocom 都支持):

# 绿色用户名 + 蓝色路径
export PS1='[33[0;32m]h@u[33[0m]:[33[0;34m]w[33[0m]# '

⚠️ Busybox ash 对颜色转义支持有限,如果显示乱码,去掉颜色部分即可。


完整配置示例(直接写入 /etc/profile)

# 在 /etc/profile 末尾添加以下内容
# ── 自定义提示符 ──────────────────────────
hostname Imx6ull
export PS1='h@u:W# '

效果:

Imx6ull@root:~#
Imx6ull@root:nfsroot#


相关文件

文件作用
/etc/profile系统级 shell 配置,所有用户、所有 shell 登录时读取
/etc/hostname系统主机名
/root/.bashrcroot 用户的 bash 专属配置(ash 不读取)
/etc/bash.bashrc系统级 bash 配置(完整 bash 环境才有)

延伸阅读

提示符定制属于开发效率工具,可与环境搭建和网络测试一起使用。

发表评论

您的邮箱地址不会被公开。 必填项已用 * 标注

滚动至顶部