在 Snow Leopard 和 Lion 中,对于相同的提示定义,我在终端中得到了不同的行为。
在我的 Snow Leopard 系统上,我在 .profile 中定义我的终端提示符如下:
export PS1='\[\e[32;1m\]\w\$\[\e[0m\] '
这将创建一个黑底绿字提示符,而普通命令的输出默认为黑底白字。(例如,如果我输入男人我得到了输出您想要什么手册页?黑底白字。)
在我的 Lion 系统上,使用相同的 .profile,我得到了相同的黑底绿字提示,但文本颜色不再切换回黑底白字。(如果我输入男人我得到了输出您想要什么手册页?与提示符一样,采用黑底绿字。)
为什么 Lion 的终端行为不同——以及如何让它将文本改回黑底白字?
答案1
处理提示设置的更好方法(因为它在升级和不同系统之间更易于移植)是使用 tput 和 terminfo 代码来始终获取适合您的术语类型的正确代码。手册页中写道“使用 terminfo 数据库使终端相关功能和信息的值可供 shell 使用”
以下是我的 .profile 中的一个示例
red=$(tput setaf 1)
green=$(tput setaf 2)
blue=$(tput setaf 4)
reset=$(tput sgr0)
PS1="\[$red\]\u\[$reset\]@\[$green\]\h\[$reset\]:\[$blue\]\w\[$reset\]\$ "
从 terminfo 手册页中可以看到 setaf 的代码是
set_a_foreground setaf AF Set foreground
color to #1, using
ANSI escape
查看tput(1)
更多terminfo(5)
关于你可以用它做什么。
答案2
简而言之,据我所知,根本没什么区别。问题始终在于我的终端偏好设置将基本文本颜色设置为亮绿色!