这是我在编写提示符时注意到的一些问题列表。请不要从这里开始阅读,也不要让这个列表让你感到沮丧 - 这些大多是相当小的细节。如果遇到任何奇怪的事情,请再回来查看。
许多 Bash 功能(例如 $(()) 中的数学运算等)是编译时选项。如果您使用的是二进制发行版(例如标准 Linux 发行版附带的),则所有这些功能都应该已编译在内。但是,如果您在别人的系统上工作,如果您期望工作的某些东西不起作用,则值得记住这一点。《学习 Bash Shell》第二版,第 260-262 页对此有一些说明。
终端屏幕管理器 "screen" 并非总是能与 ANSI 颜色兼容。不幸的是,我不是 screen 专家。低于 3.7.6 的版本可能会导致问题,但较新版本在所有情况下似乎都能正常工作。旧版本会将所有提示符颜色还原为 X 终端中的标准前景色。
Xdefaults 文件可以覆盖颜色。请查看~/.Xdefaults查找引用以下内容的行XTerm*background和XTerm*foreground(或者可能是XTerm*Background和XTerm*Foreground).
本文档中提到的一个提示符使用了 "jobs" 的输出 - 正如当时讨论的那样,"jobs" 在 Bash 2.02 中输出到管道是损坏的。
ANSI 光标移动转义序列并非在所有 X 终端中都已实现。这将在其自己的章节中讨论。
通过使用 VGA 字体而不是标准 Linux 字体,可以创建一些美观的伪图形。不幸的是,如果不使用 VGA 字体,这些效果看起来会很糟糕,并且无法在终端中检测到它正在使用哪种字体。
在 Bash 1.14.7 下工作正常的功能不一定在 2.0+ 或更高版本下工作相同,反之亦然。
我经常使用以下代码PS1="...\\$${NO_COLOUR} "在我的末尾PS1字符串。 这个\\$对于普通用户,会被替换为 "$",如果您是 root 用户,则会被替换为 "#",而${NO_COLOUR}是一个转义序列,用于停止提示符所做的任何颜色修改。但是,当我以 root 身份登录时,我遇到了看不到 "#" 的问题。我认为这是因为 Bash 不喜欢连续两个美元符号。请使用PS1="...\\$ ${NO_COLOUR}"代替。我仍在尝试弄清楚如何消除那个额外的空格。