サブプロセスとして起動したbashに、カーソル↑キーを送信したいと思っています。

そのために、以下の実験コードを書きました。

import os

p = os.popen('bash -i', 'w')
p.write('echo test\n')
p.write('\x1b[A\n')
p.write('exit\n')
p.close()

結果として、ターミナルエミュレータから実行した場合と、
テキストエディタから実行した場合で挙動がことなります。
これはどのような仕組みでこうなるのでしょうか。
何卒ご教示ください。

ターミナルエミュレータから実行した場合は、想定通りの動作をします。

$ python test.py
user@ubuntu18:~$ echo test   <- bashが起動して"echo test" が実行される
test
user@ubuntu18:~$ echo test   <- カーソル↑により"echo test" がまた実行される
test
user@ubuntu18:~$ exit        <- bashが終了する
exit
$                 

テキストエディタ(emacs)から実行した場合は、エスケープシーケンスが認識されません。

test
bash: line 2: $'\E[A': command not found

環境はUbuntu18.04です。