Jay*_*rod 13 bash emacs prompt
我正在同事的机器上做一些编程。他有一个我以前没用过的 emacs (23.1.1) 版本。我的问题是,当我进入 shell 模式时,我的 bash 提示符如下所示:
^[]0;jay@socrates:~^G[jay@socrates]$
Run Code Online (Sandbox Code Playgroud)
我已经PS1
设置为'[\u@\h]\$ '
我.bashrc
。它应该是这样的:
[jay@socrates]$
Run Code Online (Sandbox Code Playgroud)
这是它在常规外壳中的外观。我还检查了 emacs shell 中的 PS1 是否设置为正确的值,所以现在我没有想法了。我怎样才能让我的提示看起来像我想要的样子?
我已经看到一些建议使用term
或eshell
代替shell
. term
有与上面相同的提示问题,并且eshell
完全忽略了我的,PS1
所以这并没有真正的帮助。
Pet*_*ter 13
您的 shell 正在尝试设置 XTerm(或其他控制台)的标题/标题。有多种方法可以做到这一点。
首先确保 PS1 真的是你认为的那样
echo $PS1 | less -E
Run Code Online (Sandbox Code Playgroud)
这将告诉您提示中是否有控制字符,较少会使它们看起来很有趣。假设您的提示与您所说的完全一样,那么它可能是 PROMPT_COMMAND 环境变量。你可以用同样的方式看...
echo $PROMPT_COMMAND | less -E
Run Code Online (Sandbox Code Playgroud)
如果提示命令是问题所在,那么您只需取消设置即可。在任何一种情况下,这些变量都在某处设置,如果您不在 XTerm 中,则不应设置为更新 XTerm 标头!
您可以查看“标准”bashrc (/etc/bashrc)。您应该会看到检查迭代 shell(设置为 PS1)的代码,然后检查 xterm(查看 $TERM 变量),并在那里执行与其他终端类型不同的操作。
我怀疑 bash 初始化中的某个地方是一个硬编码设置,它应该只在与 xterm 兼容的控制台程序上完成。阅读 man bash 以找到您可以查找和浏览的文件的总列表。
如果以上都失败,请尝试
printenv | less
Run Code Online (Sandbox Code Playgroud)
看看你是否能在那里找到可疑的东西,然后追踪它被设置的地方。如果您无法解决,请在此处发布。
小智 5
我遇到了完全相同的问题,这是由于 PROMPT_COMMAND。我喜欢 xterm 的标题。所以我在 ~/.emacs_bash 中添加了以下行
export PROMPT_COMMAND=""
Run Code Online (Sandbox Code Playgroud)
归档时间: |
|
查看次数: |
13904 次 |
最近记录: |