
我正在同事的機器上進行一些程式設計。他有一個我以前沒用過的emacs版本(23.1.1)。我的問題是,當我進入 shell 模式時,我的 bash 提示符號如下所示:
^[]0;jay@socrates:~^G[jay@socrates]$
我已經PS1
在'[\u@\h]\$ '
我的.bashrc
.它應該看起來像這樣:
[jay@socrates]$
這就是它在普通 shell 中的樣子。我還檢查了 emacs shell 中的 PS1 是否設定為正確的值,所以現在我沒有主意了。如何讓提示看起來像我想要的樣子?
我看到了一些使用term
oreshell
代替 的建議shell
。term
有與上面相同的提示問題,並且eshell
完全忽略我的PS1
所以這並沒有真正的幫助。
答案1
您的 shell 正在嘗試設定 XTerm(或其他控制台)的標題/標頭。有多種方法可以實現這一點。
首先確保 PS1 確實如您所想
echo $PS1 | less -E
這會告訴您提示中是否有控製字符,較少會使它們看起來有趣。假設您的提示與您所說的完全一樣,那麼它可能是 PROMPT_COMMAND 環境變數。你可以用同樣的方式來看...
echo $PROMPT_COMMAND | less -E
如果提示命令是問題所在,那麼您只需取消設定即可。無論哪種情況,這些變數都會在某處設置,如果您不在 XTerm 中,則不應將其設定為更新 XTerm 標頭!
您可以查看“標準”bashrc (/etc/bashrc)。您應該看到程式碼檢查迭代 shell(是 PS1 設定),然後檢查 xterm(查看 $TERM 變數),並執行與其他終端類型不同的操作。
我懷疑 bash 初始化中的某個地方是硬編碼設置,只能在 xterm 相容的控制台程式上完成。請閱讀man bash
以查找您可以查找和瀏覽的文件的完整清單。
如果以上方法都失敗,請嘗試
printenv | less
看看是否能在那裡發現可疑的東西,然後追蹤它的設定位置。如果您無法解決,請將其發佈到此處。
答案2
我遇到了完全相同的問題,這是由於 PROMPT_COMMAND 造成的。我喜歡 xterm 的標題。所以我在 ~/.emacs_bash 中添加了以下行
export PROMPT_COMMAND=""
答案3
這可能與 emacs shell 與常規 shell 的終端類型有關。檢查TERM
兩個 shell 中環境變數的設定。如果它們不同,那麼您應該能夠更改 emacs shell 終端類型或在 中為 emacs 終端類型使用不同的 PS1 定義.bashrc
。
您也可以嘗試M-x ansi-term
(ansi-color-for-comint-mode-on
如果您有顏色提示)。
答案4
這個問題在 stackoverflow 網站上得到了很好的答案。作者:丹尼爾·坡。
您可以使用支援顏色的 AnsiTerm,也可以為普通 shell 啟用 AnsiColor:
(autoload 'ansi-color-for-comint-mode-on "ansi-color" nil t)
(add-hook 'shell-mode-hook 'ansi-color-for-comint-mode-on)