emacs 쉘 ​​모드에서 프롬프트를 어떻게 수정합니까?


13

동료의 컴퓨터에서 프로그래밍을하고 있습니다. 그는 이전에 사용하지 않은 emacs (23.1.1) 버전을 가지고 있습니다. 내 문제는 쉘 모드로 갈 때 bash 프롬프트는 다음과 같습니다.

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

나는 한 PS1설정 '[\u@\h]\$ '내에서 .bashrc. 다음과 같이 보입니다.

[jay@socrates]$

이것이 일반적인 쉘에서 보이는 방법입니다. 또한 emacs 쉘에서 PS1이 올바른 값으로 설정되어 있는지 확인 했으므로 이제 아이디어가 없습니다. 원하는 방식으로 프롬프트를 표시하려면 어떻게해야합니까?

term또는 eshell대신 사용할 제안을 보았습니다 shell. term위와 동일한 프롬프트 문제가 있으며 실제로 도움이되지 않는 것을 eshell완전히 무시합니다 PS1.

답변:


13

쉘이 XTerm (또는 다른 콘솔) 제목 / 헤더를 설정하려고합니다. 이 작업을 수행하는 방법에는 여러 가지가 있습니다.

먼저 PS1이 실제로 당신이 생각하는 것인지 확인하십시오

echo $PS1 | less -E

프롬프트에 제어 문자가 있는지 알려 주면 덜 재미있게 보일 것입니다. 프롬프트가 정확하게 말하면 PROMPT_COMMAND 환경 변수 일 수 있습니다. 당신도 같은 방식으로 볼 수 있습니다 ...

echo $PROMPT_COMMAND | less -E

prompt 명령에 문제가 있으면 설정을 해제하면됩니다. 두 경우 모두, 이러한 변수는 어딘가에 설정되어 있으며 XTerm이 아닌 경우 XTerm 헤더를 업데이트하도록 설정해서는 안됩니다!

"표준"bashrc (/ etc / bashrc)를 볼 수 있습니다. 반복 셸 (PS1 세트)을 확인한 다음 xterm ($ TERM 변수 확인)을 확인하고 다른 터미널 유형과는 다른 코드를 확인하는 코드가 표시됩니다.

bash 초기화의 어딘가에 하드 코딩 된 설정이 의심되며 xterm 호환 콘솔 프로그램에서만 수행해야합니다. 찾을 수있는 파일의 전체 목록을 찾으려면 man bash를 읽으십시오.

위의 모든 사항이 실패하면 시도하십시오

printenv | less

그리고 의심스러운 것을 찾을 수 있는지 확인한 다음 설정중인 위치를 추적하십시오. 문제가 해결되지 않으면 여기에 게시하십시오.


1
PROMPT_COMMAND가 문제였습니다. 어디에서 설정되는지 확실하지 않지만 ~ / .bashrc에 줄을 추가하여 설정을 해제하면 작동합니다. 감사!
Jay Conrod

PROMPT_COMMAND도 나를 죽이고있었습니다. MobaXTerm을 사용하고 있으며 PS1과 PROMPT_COMMAND의 조합 인 특히 복잡한 bash 프롬프트가 있습니다.
Steve Broberg

5

나는 똑같은 문제를 겪었고 PROMPT_COMMAND 때문입니다. 나는 xterm 제목을 좋아한다. ~ / .emacs_bash에 다음 줄을 추가했습니다.

export PROMPT_COMMAND=""

2

emacs 쉘의 터미널 유형과 일반 쉘과 관련이있을 수 있습니다. TERM두 쉘에서 환경 변수가 설정되어 있는지 확인하십시오 . 다른 경우 emacs 쉘 ​​터미널 유형을 변경하거나에서 emacs 터미널 유형에 대해 다른 PS1 정의를 사용할 수 있어야합니다 .bashrc.

시도 할 수도 있습니다 M-x ansi-term( ansi-color-for-comint-mode-on컬러 프롬프트가있는 경우).


1
comint-mode-on에 대한 ansi-color가 나를 도왔습니다!
사용자 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.