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

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

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

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

내 에 PS1로 설정 했습니다 . 다음과 같이 보일 것입니다 :'[\u@\h]\$ '.bashrc

[jay@socrates]$

이것이 일반 쉘에서 보이는 모습입니다. 또한 Emacs 셸에서 PS1이 올바른 값으로 설정되어 있는지 확인했기 때문에 이제 아이디어가 없습니다. 내가 원하는 대로 보이도록 메시지를 받으려면 어떻게 해야 합니까?

. 대신 termor 를 사용하라는 몇 가지 제안을 보았습니다 . 위와 동일한 프롬프트 문제가 있으며 실제로 도움이 되지 않도록 완전히 무시합니다 .eshellshelltermeshellPS1

답변1

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

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

echo $PS1 | less -E

프롬프트에 제어 문자가 있는지 알려줄 것이고, 덜하면 재미있어 보일 것입니다. 프롬프트가 말한 것과 정확히 같다고 가정하면 아마도 PROMPT_COMMAND 환경 변수일 것입니다. 똑같이 보시면 됩니다...

echo $PROMPT_COMMAND | less -E

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

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

나는 bash 초기화 어딘가에 xterm 호환 콘솔 프로그램에서만 수행되어야 하는 하드 코딩된 설정이 있다고 생각합니다. man bash검색할 수 있는 전체 파일 목록을 찾으려면 읽어보세요 .

위의 방법이 모두 실패하면 시도해 보세요.

printenv | less

그리고 거기에서 의심스러운 것을 발견한 다음 그것이 어디에 설정되어 있는지 추적하십시오. 해결할 수 없다면 여기에 게시하세요.

답변2

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

export PROMPT_COMMAND=""

답변3

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

시도해 볼 수도 있습니다 M-x ansi-term( ansi-color-for-comint-mode-on색상 프롬프트가 있는 경우).

답변4

이것은 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)

관련 정보