Когда я запускаю интерактивный Python внутри буфера оболочки Emacs (оболочка M-x), он делает две вещи для TTY. Во-первых, он включает входное эхо, которое сохраняется после выхода Python, пока я не сделаю stty -echo. Во-вторых, он не принимает C-d (или C-q C-d, т.е. D) как EOF: я должен ввести quit(), чтобы оставить Python. Как я могу остановить эти два поведения?
Я знаю, что могу запускать python-shell, но я не хочу: я noodling в оболочке, и я хочу сделать пять строк Python, а затем C-d. Поэтому "запустить python-shell" не является ответом на мой вопрос.
Python, работающий в окне терминала, отлично: ^ D продолжает работать, а эхо не изменяется.
Python 2.7.5, GNU Emacs 24.3.1, OS X 10.8.5
Отредактировано для добавления этого фрагмента из буфера оболочки:
bash-3.2$ echo foo
foo # no echo.
bash-3.2$ cat
foo # I typed this.
foo # cat returned it; no additional echo.
bash-3.2$ python
Python 2.7.5 (default, May 19 2013, 13:26:46)
[GCC 4.2.1 Compatible Apple Clang 4.1 ((tags/Apple/clang-421.11.66))] on darwin
Type "help", "copyright", "credits" or "license" for more information.
>>> # C-d has no effect. C-q C-d has no effect.
# not sure where this blank link has come from.
>>> quit() # I have to type this to get out of Python
quit() # note that it is echoed, like anything I now type.
bash-3.2$ echo foo
echo foo # now I am getting my input echoed.
foo
bash-3.2$ cat
cat # echo of the 'cat' command.
foo # my input
foo # echo of my input.
foo # cat output.
bash-3.2$ stty -echo # turn echo back off.
stty -echo
bash-3.2$ echo foo
foo # and it off.
bash-3.2$