サブプロセスのbashにエスケープシーケンスを送信したい
サブプロセスとして起動した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です。