我正在尝试在配置为tcsh shell的emacs中使用ansi-term。我发现换行符的显示存在问题。如果我在终端(ansi-term)中尝试以下操作,则会得到正确的输出:
myterm > echo "Line1"; echo "Line2"; echo "Line3";
Line1
Line2
Line3
myterm >
但是如果我尝试将相同的行放入一个shell脚本,并尝试从ansi-term执行脚本,我会得到错误的输出。
脚本:(test)
#!/usr/bin/env tcsh
echo "Line1"; echo "Line2"; echo "Line3";
运行脚本(测试):
myterm > ./test
Line1
Line2
Line3
myterm >
注意:/usr/bin/env tcsh确实指向正确的shell(这是我在调用ansi-term时使用的相同shell)。同时,在gnome-terminal中执行脚本也会显示正确的输出。我还尝试设置以下变量,但并没有解决我的问题:
(set-terminal-coding-system 'utf-8-unix)
(setq default-process-coding-system '((utf-8-unix . utf-8-unix)))
printf
代替echo
,并在每个字符串的末尾明确指定\r\n
。 - sqr163stty
的opost
选项。我可以通过设置stty -opost
来模拟你的问题,这告诉我的终端不要对输出数据进行后处理。因此,stty +opost
可能是你需要的。 - Niall Cosgrove