当我使用SSH从emacs中的ansi-term会话登录到Ubuntu 12.04计算机时,提示显示错误:
0;ubuntu@jumplin: ~ubuntu@jumplin:~$
这应该如下所示:
ubuntu@jumplin:~$
我已经尝试了一些关于utf-8和颜色支持的建议,但它们似乎没有用(颜色目前在ansi-term中工作正常):
Strange characters in ansi-term in emacs
我认为它可能与不受支持的ansi转义码或类似的东西有关,但我不太确定 - 此终端会话的PS1值是:
\[\e]0;\u@\h: \w\a\]${debian_chroot:+($debian_chroot)}\u@\h:\w\$
任何建议都会非常感激:)当终端会话中出现奇怪的角色时,我似乎总是有点迷失。
答案 0 :(得分:4)
\[\e]0;\u@\h: \w\a\]
是配置你的xterm(?)的标题栏。尽管ansi-term
支持ANSI着色,但操纵标题栏的转义序列却不支持。这就是为什么你看到提示重复两次 - 第一部分应该转到标题栏。
因此,要么从PS1中移除第一个序列,要么执行类似Bash Prompt HOWTO中建议的操作:
function proml
{
case $TERM in
xterm*)
local TITLEBAR='\[\033]0;\u@\h:\w\007\]'
;;
*)
local TITLEBAR=''
;;
esac
PS1="${TITLEBAR}\
[\$(date +%H%M)]\
[\u@\h:\w]\
\$ "
PS2='> '
PS4='+ '
}
如果您在ansi-term
,TERM
将等于eterm-color
,您可以进行具体测试。
答案 1 :(得分:0)
感谢上面的Alex Vorbiev's回答我在ssh进入运行bash的Ubuntu 14.04环境时解决了这个问题,从我在MacOSX上的Emacs 24.5开始,只需在.bashrc
上注释掉类似的部分客人机器。
像这样:
# If this is an xterm set the title to user@host:dir
# case "$TERM" in
# xterm*|rxvt*)
# PS1="\[\e]0;${debian_chroot:+($debian_chroot)}\u@\h: \w\a\]$PS1"
# ;;
# *)
# ;;
# esac
然后我跑了source ~/.bashrc
并且提示没有加倍。
我正在使用Emacs' term
或multi-term
个包以及echo $TERM
返回xterm-256color
答案 2 :(得分:0)
我不知道这是否适用于ansi-term
,但我对eshell
有同样的问题,我用这个别名修复了
alias ssh 'ssh $1 -t "export TERM='dumb';bash -l"'
这将确保未在ssh'd计算机上设置PROMPT_COMMAND
变量。使用此别名也无需在每台计算机上更改.bashrc