普段使っているzshで
echo '\e[0;31;47m CAUTION!! \e[0m'
みたいに書くと、色付き表示される。

これでヨシッ! と思ってうっかり
#!/bin/bash echo '\e[0;31;47m CAUTION!! \e[0m'
とshell scriptを書いてしまうと、これは意図した表示にならない。

macOSのbash echoにはバグがあるらしい
bash+windows terminalではこういう問題起きていない、ということだったので調べたところ、特にmacOSの標準のbashに問題があるようだった。
新しめのbashだったら -e オプションをつけると問題なく表示されるっぽい。

printf, 8進/16進数で回避する
こういった環境の差異にハマることないよう、そもそも echo を使わずに printf などで出力したり、 \e ではなく \033 などで書くと回避できるようだ。
#!/bin/bash printf '\e[0;31;47m CAUTION!! \e[0m\n' echo -e '\033[0;31;47m CAUTION!! \033[0m'
これならおそらくどの環境でも大丈夫そう?