适用场景:开发板 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/.bashrc | root 用户的 bash 专属配置(ash 不读取) |
/etc/bash.bashrc | 系统级 bash 配置(完整 bash 环境才有) |
延伸阅读
提示符定制属于开发效率工具,可与环境搭建和网络测试一起使用。
- 返回嵌入式 Linux 学习路线,确认本文在完整知识结构中的位置。
- WSL2 搭建 iMX6ULL 开发环境完整教程
- iperf3 交叉编译与网络吞吐测试




