emacsシェルモードでプロンプトを修正するにはどうすればよいですか?


13

同僚のマシンでプログラミングをしています。彼はemacs(23.1.1)のバージョンを持っています。私の問題は、シェルモードに移行すると、bashプロンプトが次のようになることです。

^[]0;jay@socrates:~^G[jay@socrates]$ 

PS1設定し'[\u@\h]\$ 'ました.bashrc。次のようになります。

[jay@socrates]$

これは、通常のシェルではどのように見えるかです。また、emacsシェルでPS1が正しい値に設定されていることも確認したので、今は考えられません。プロンプトを表示して希望どおりに表示するにはどうすればよいですか?

termまたはのeshell代わりに使用するいくつかの提案を見てきましたshellterm上記と同じプロンプトの問題があり、eshell私のPS1ことを完全に無視するので、それは本当に助けにはなりません。

回答:


13

シェルがXTerm(または他のコンソール)のタイトル/ヘッダーを設定しようとしています。これを行う方法はいくつかあります。

まず、PS1が本当にあなたが思っている通りであることを確認してください

echo $PS1 | less -E

プロンプトに制御文字が含まれているかどうかがわかりますが、lessを使用すると、文字がおかしく見えます。プロンプトがあなたの言うとおりであると仮定すると、それはおそらくPROMPT_COMMAND環境変数です。同じように見ることができます...

echo $PROMPT_COMMAND | less -E

プロンプトコマンドに問題がある場合は、設定を解除できます。いずれの場合も、これらの変数はどこかに設定されているため、XTermを使用していない場合は、XTermヘッダーを更新するように設定しないでください。

「標準」bashrc(/ etc / bashrc)を見ることができます。反復シェル(PS1セット)をチェックし、xterm($ TERM変数を確認)をチェックし、他の端末タイプとは異なることを行うコードが表示されます。

bashの初期化のどこかがハードコードされたセットアップであると思われますが、これはxterm互換のコンソールプログラムでのみ行う必要があります。man bashを読んで、探したり通したりできるファイルのリストを見つけてください。

上記のすべてが失敗した場合、試してください

printenv | less

そして、そこに疑わしいものを見つけることができるかどうかを確認し、それが設定されている場所を追跡します。解決できない場合は、ここに投稿してください。


1
PROMPT_COMMANDが問題でした。どこで設定されるのかわかりませんが、設定を解除するために〜/ .bashrcに行を追加しました。ありがとう!
ジェイコンロッド

PROMPT_COMMANDも私を殺していました。MobaXTermを使用していますが、PS1とPROMPT_COMMANDを組み合わせた特に複雑なbashプロンプトがあります。
スティーブブロバーグ

5

まったく同じ問題に遭遇しましたが、これはPROMPT_COMMANDによるものです。私はxtermタイトルが好きです。そこで、次の行を〜/ .emacs_bashに追加しました

export PROMPT_COMMAND=""

2

emacsシェルと通常のシェルの端末タイプに関係している可能性があります。TERM両方のシェルで環境変数が設定されているものを確認します。それらが異なる場合は、emacsシェルターミナルタイプを変更するか、またはでemacsターミナルタイプに異なるPS1定義を使用できる必要があります.bashrc

試すこともできますM-x ansi-termansi-color-for-comint-mode-onカラープロンプトがある場合)。


1
ansi-color-for-comint-mode-onは私を助けてくれました!
ユーザー1

1

これは、stackoverflowサイトで非常によく回答されました。ダニエル・ポー。

これが彼の答えです。

色をサポートするAnsiTermを使用するか、通常のシェルでAnsiColorを有効にすることができます。

(autoload 'ansi-color-for-comint-mode-on "ansi-color" nil t)
(add-hook 'shell-mode-hook 'ansi-color-for-comint-mode-on)
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.