我正在尝试使用emacs进行cygwin。 我的环境是Windows 7 x64,emacs-24.0.93.1,cygwin 2.769,系统编码是gbk,cygwin的编码系统默认为utf-8,而emacs的编码系统默认为gbk
我使用setup-cygwin 用emacs设置cygwin。 我可以使用cygwin bash启动emacs shell。但是我遇到了两个问题。 首先,在bash开头有两个警告
bash: cannot set terminal process group (-1): Inappropriate ioctl for device
bash: no job control in this shell
其次,在bash响应之后,出现了一些奇怪的字符。
有谁知道发生了什么?
答案 0 :(得分:11)
一个“已知问题”,还没有已知解决方案:
答案 1 :(得分:1)
将此添加到您的init:
(add-hook 'shell-mode-hook 'ansi-color-for-comint-mode-on)
至于你的另一条消息,我最近才开始自己解决这个问题。我已经运行了emacs / cygwin / bash一段时间了,我还不确定是什么导致它。
答案 2 :(得分:1)
如果没有其他工作,您可以通过使用以下功能运行M-x shell
来自定义shell提示:
M - : (info "(emacs) Interactive Shell")
RET
Emacs向新shell发送文件内容
~/.emacs_SHELLNAME' as input, if it exists, where SHELLNAME is the name of the file that the shell was loaded from. For example, if you use bash, the file sent to it is
〜/ .emacs_bash”。如果没有这个文件 发现,Emacs尝试使用`〜/ .emacs.d / init_SHELLNAME.sh'。
因此,您可以在该文件中指定不带颜色代码的提示(即设置PS1
环境变量)。
答案 3 :(得分:0)
关于奇怪的角色,我意识到我有这段代码搞乱了:
; Always prefer UTF-8 encoding
;(prefer-coding-system 'utf-8-with-signature-dos)
这导致大多数命令失败,因为它正在将BOM(
)添加到命令invokation中:
----------------------------------------------------------
-*- mode: grep; default-directory: "~/" -*-
Grep started at Sat Oct 06 02:53:32
grep -nH -e test
'grep' is not recognized as an internal or external command,
operable program or batch file.
答案 4 :(得分:0)
使用strace -o bash.log bash
启动新终端(bash)可以帮助调试此问题。
它看起来像是bash尝试打开的某些设备缺少适当的权限或者甚至不存在。
grep你的bash.log文件中的任何/ dev字符串,并检查那里是否有任何问题。 例如,我的bash打开/ dev / tty:
$ grep "/dev" bash.log
open("/dev/tty", O_RDWR|O_NONBLOCK) = 3
答案 5 :(得分:0)
你看到的是Emacs在你的PS1变量中窒息了一些控制代码。这就是为什么你在提示被打印之前一直看到垃圾的原因。
解决方法强>:
将此添加到.bashrc,以便在从Emacs中运行shell时给自己一个愚蠢的提示:
if [ "$EMACS" == "t" ]; then
PS1='\u \w>'
fi
此解决方案基于: http://cygwin.com/ml/cygwin/2006-06/msg00491.html
我只是使用更简单的PS1。
答案 6 :(得分:0)
刚刚遇到并解决了这个问题,为我的64位Win7安装了 64位cygwin (以前有32位)。根据您的Windows版本选择正确的Cygwin setup。
如何告诉您的Windows版本:"Start" > right-click "Computer" [right side of Start pane] > "Properties" [context menu]
,查找"系统类型"大约在窗户的一半。
在cygwin设置过程中,请务必选择emacs包 - 我选择"常规" emacs , emacs-x11 和 emacs-w32 (本机为Windows编译)。据我所知, emacs-w32 的外观/感觉就像常规的Windows emacs二进制文件一样。
一些注意事项:
explicit-shell-file-name
(setq explicit-shell-file-name "/bin/bash")
等),您可能想要更改 .bash_profile ^G
希望这有帮助。