2013-07-10 115 views
4

當我使用SSH從ANSI-術語會話登錄到的Ubuntu 12.04機在emacs中的提示顯示不正確的重複:Shell提示符在ANSI-術語使用ssh時

0;[email protected]: [email protected]:~$ 

這應如下​​所示:

[email protected]:~$ 

我試圖在關係的少數人的意見爲UTF-8和顏色支持但他們似乎並不奏效(彩色目前工作正常ANSI期):

Strange characters in ansi-term in emacs

我想可能有一些做與不支持ANSI轉義代碼或類似的東西,但我真的不知道 - PS1的這個終端會話值是:

\[\e]0;\[email protected]\h: \w\a\]${debian_chroot:+($debian_chroot)}\[email protected]\h:\w\$ 

任何建議將不勝感激:)當終端會話中出現奇怪的角色時,我似乎總是有點失落。

回答

4

\[\e]0;\[email protected]\h: \w\a\]在你的提示中是配置你的xterm(?)的標題欄。即使ANSI着色被ansi-term支持,操縱標題欄的轉義序列也不是。這就是爲什麼你看到提示重複兩次 - 第一部分應該去標題欄。

所以,無論是從您的PS1刪除第一個序列或做類似於在Bash Prompt HOWTO建議的東西:

function proml 
{ 
case $TERM in 
    xterm*) 
     local TITLEBAR='\[\033]0;\[email protected]\h:\w\007\]' 
     ;; 
    *) 
     local TITLEBAR='' 
     ;; 
esac 

PS1="${TITLEBAR}\ 
[\$(date +%H%M)]\ 
[\[email protected]\h:\w]\ 
\$ " 
PS2='> ' 
PS4='+ ' 
} 

您可以專門測試,如果你是在ansi-term,該TERM將等於eterm-color

+0

感謝您的出色答案 - 這非常有道理。這個問題只會在系統上顯示出來 - 有很多這樣的,所以改變所有這些提示可能不會發生。你知道有任何客戶端修復嗎?您已經提供了足夠的信息以繼續進行挖掘,但我也會接受您的答案=) –

+0

您可以使用ssh在啓動交互式ssh會話之前將相關片段追加到遠程.bashrc或.bash_profile。 –

+0

@JordanHagan你有辦法解決這個問題嗎?當我進入一個系統時,它也發生在我身上。 –

0

由於Alex Vorbiev's回答上面我ssh'ing成的Ubuntu 14.04環境中運行bash,從我的MacOSX上的Emacs 24.5通過簡單地在客機上註釋掉類似的部分,我.bashrc當解決了這個。

像這樣:

# If this is an xterm set the title to [email protected]:dir 
# case "$TERM" in 
# xterm*|rxvt*) 
#  PS1="\[\e]0;${debian_chroot:+($debian_chroot)}\[email protected]\h: \w\a\]$PS1" 
#  ;; 
# *) 
#  ;; 
# esac 

我然後跑source ~/.bashrc和提示不彎了腰。

我使用Emacs的termmulti-term包和echo $TERM回報xterm-256color

0

我不知道這是否會爲ansi-term工作,但我有同樣的問題與eshell,我用這個別名

alias ssh 'ssh $1 -t "export TERM='dumb';bash -l"' 
固定它

這將確保PROMPT_COMMAND變量未在ssh'd機器上設置。此別名也不需要在每臺機器上都更換.bashrc