最近开始运行 Ubuntu 并花了一周左右时间自定义我的 .bashrc (Ubuntu) 文件和 .bash_profile (Mac) 以获取信息丰富且色彩丰富的 PS1 和终端输出的长期 Mac(读取 GUI)用户。
我有这个小小的功能:
function colors2nums()
{ for code in {0..255}; do echo -e "\e[38;05;${code}m $code: Test"; done }
显示 256 种颜色和代码,所以我可以选择我想要的一种...
它在 Ubuntu(14.0.4 LTS,Gnome 终端)中完美运行,而在 Mac(iTerm 和 Terminal.app 的 OS 10.7.5)上根本无法运行。
Ubuntu 上 .bashrc 文件的 PROMPT_COMMAND 函数与 Mac 的 .bash_profile 中的 PROMPT_COMMAND 函数完全相同,逐行复制和粘贴。
两个 PS1 提示的颜色相同(在 Mac 端只有一些奇怪的间距),并且 ls -GFa(或任何变体)以 LS_COLORS 和 .dircolors 设置的颜色打印。所以颜色适用于一些输出,但不是全部。在 Mac 上,我得到 256 行与我的 PS1 中最后一个转义颜色(绿色、白色等)设置的终端输入颜色相同的行。
哇?!?
是的,我已经尝试了陷阱的 2 种变体 - 调试(黑客?):
#trap 'echo -ne \e[0m' DEBUG
trap 'printf "\e[0m" "$_"' DEBUG
这可以重置 Ubuntu 方面的输出。两者都不适用于 Mac。
我错过了什么?