質問: 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です。
回答: (コメントより) エスケープシーケンスが認識されていない様なので、emacs のシェルで `export TERM=vt100` を実行してみるとよいかもしれません。