Shell 如何在Emacs中修复外壳颜色?

Shell 如何在Emacs中修复外壳颜色?,shell,emacs,Shell,Emacs,我有一个wierd错误,当使用emacs基本shell时,我似乎无法获得漂亮的ls颜色。在谷歌搜索的过程中,我尝试寻找我的bashrc,它定义了颜色向量(适用于我的其他外壳),我尝试添加 (autoload 'ansi-color-for-comint-mode-on "ansi-color" nil t) 给我的.emacs,这两个都没用 然后我发现了一些古怪的行为。当我启动一个shell,退出进程,然后在同一缓冲区中启动另一个shell时,previsous会话中的主机名颜色会发生变化

我有一个wierd错误,当使用emacs基本shell时,我似乎无法获得漂亮的ls颜色。在谷歌搜索的过程中,我尝试寻找我的bashrc,它定义了颜色向量(适用于我的其他外壳),我尝试添加

(autoload 'ansi-color-for-comint-mode-on "ansi-color" nil t)
给我的.emacs,这两个都没用

然后我发现了一些古怪的行为。当我启动一个shell,退出进程,然后在同一缓冲区中启动另一个shell时,previsous会话中的主机名颜色会发生变化

我不知道从这里可以尝试什么!有什么想法吗


我正在为OSX版本24.3.50.1运行GNU Emacs

尝试运行
ls--color=always
;ls可能无法识别可用的颜色,这将告诉它无论如何都要使用它们。如果这样做有效,那么一直使用它的一个简单方法就是定义一个别名:
alias ls='ls--color=always
(请注意,别名是Bash特性,而不是Emacs特性)。很可能您的Bash配置文件中已经定义了一两个别名,因此可能只是编辑该别名以使更改永久化。

在的帮助下,我可以通过在
~/.emacs.d/init\u Bash.sh
中显式导出
TERM=xterm-256color
使其正常工作。我还没怎么玩过它,但它现在似乎已经成功了。也许它对你有用。

你能让ls在一个普通的外壳中显示颜色吗(我怀疑问题是OSX使用BSD ls,它不显示颜色,而Linux使用GNU的ls)。不幸的是,我在我的普通终端中确实有颜色。我通常将ls别名为-GFh(未在示例中发布)参数,-F显示但没有颜色:/n如果使用
ansi term
term
而不是
shell
,会发生什么情况?变量
ansi color names vector
的值是多少?您可以使用以下键序列检查这一点
C-hv ansi color names vector
ansi和term都有彩色输出,但我很好奇为什么shell拒绝我的努力使其美观。ansi color names vector的值是[“黑色”“红色”“绿色”“黄色”“蓝色”“洋红”“青色”“白色”]正如Mark所说,OSX使用BSD,所以ls不接受--color=始终,它接受启用颜色的-G,但在emacs shell中运行ls-G不会给出颜色。很好的捕捉,我忽略了那个细节。