当我在 Debian 6.0 (Squeeze) 上的 Emacs 中运行 shell-command 时,例如
(shell-command "ls")
输出前面带有
bash:无法设置终端进程组(-1):参数无效 bash:此 shell 中没有作业控制
当将 shell 命令(例如 perltidy)应用于缓冲区时,这特别烦人,因为这些行最终位于缓冲区的顶部。
这是新安装的 Debian 6.0 (Squeeze) 系统,带有来自 apt-get 的最新 emacs。
% uname -a Linux 2.6.32-5-xen-amd64 #1 SMP 3 月 8 日星期二 00:01:30 UTC 2011 x86_64 GNU/Linux % emacs --版本 GNU Emacs 23.2.1 % dpkg -l | grep emacs ii emacs 23.2+1-7 ii emacs23 23.2+1-7 ii emacs23-bin-common 23.2+1-7 ii emacs23-通用 23.2+1-7 ii emacsen-common 1.4.22
很乐意根据需要提供其他信息。谢谢!
没关系,就是因为这个:
(set-variable 'shell-command-switch "-ic")
我怀疑这个故事还有更多内容。请参阅 http://old.nabble.com/bash-under-emacs-gives-%22cannot-set-terminal-process-group%22-to33399261.html#a33399456 报告的问题(这是针对 Cygwin环境,但潜在的错误可能会影响 Linux 和 Cygwin 上的 bash 行为。
谢谢你,我通过 .emacs 中的以下行解决了我的问题:
(set-variable 'shell-command-switch "-c")
;如果没有交互,我现在可以 C-u M-x date ;(意思是,我可以在光标位置插入日期标准输出结果)。