我试图在从ssh's进入的Ubuntu箱注销时使用this lovely script。如果我手动调用它,颜色是正确的。但是,无论何时从.bash_logout运行,每行都是白色的,并以颜色代码作为前缀:
\x1B[38;5;160;01m .d8888b. 8888888888 8888888888 Y88b d88P .d88888b. 888 888
\x1B[38;5;196;01m d88P Y88b 888 888 Y88b d88P d88P" "Y88b 888 888
\x1B[38;5;202;01m "Y888b. 8888888 8888888 Y888P 888 888 888 888
\x1B[38;5;208;01m "Y88b. 888 888 888 888 888 888 888
\x1B[38;5;214;01m "888 888 888 888 888 888 888 888
\x1B[38;5;220;01m Y88b d88P 888 888 888 Y88b. .d88P Y88b. .d88P
\x1B[38;5;226;01m "Y8888P" 8888888888 8888888888 888 "Y88888P" "Y88888P"
在VM和我的主机(OS X 10.11)中,TERM均设置为xterm-256color。我尝试使用
echo -e
,但是所做的只是在颜色字符串前面添加了-e
。将脚本的内容直接添加到.bash_logout是可行的,尽管这看起来很麻烦。有什么想法吗?
最佳答案
在POSIX shell中,不能在\xXX
命令中使用printf
转义;您只能使用八进制符号。使用.
或source
可以通过当前bash
进程而不是POSIX Shell来执行脚本。 bash seeyou
也可以。
脚本的POSIX兼容版本会将第一行更改为:
ESC_SEQ="\033[38;5;"
当然,由于文件本身特定于
.bash_logout
,因此没有特别的理由仅使代码从bash
POSIX兼容执行。
关于bash - 无法从.bash_logout使用printf颜色,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39460509/