如何在 ubuntu 上的 emacs 中运行 shell 命令,同时避免 bash 作业控制错误?

Posted

技术标签:

【中文标题】如何在 ubuntu 上的 emacs 中运行 shell 命令,同时避免 bash 作业控制错误?【英文标题】:How to run shell commands in emacs on ubuntu while avoiding a bash job control error? 【发布时间】:2013-04-01 20:48:59 【问题描述】:

我在 ubuntu 中安装了 emacs(使用 sudo apt-get install emacs)。我遇到的问题是,当我尝试从 emacs(例如 M-! ls)中运行 shell 命令时,输出前面是这样的:

bash: cannot set terminal process group (-1): Invalid argument
bash: no job control in this shell

在我的 .emacs 中,我可以选择 (setq shell-command-switch "-ic") 。这样我就可以大概使用我的别名和命令了。这并没有给我工作上的问题,它让我可以使用我的别名。如何使用我的别名但避免这个问题?

【问题讨论】:

您写道,您使用M-x ls 执行shell 命令,但AFAIK 不是标准命令。 Shell 命令可以通过例如运行M-!M-x shell。这些对你有用吗? ***.com/questions/11821378/…的可能重复 @N.N.对不起,这是一个错字..我的意思是常规的 M-!不起作用的东西。 Is there a way to get my emacs to recognize my bash aliases and custom functions when I run a shell command?的可能重复 当您使用“-ic”开关时会发生什么? 【参考方案1】:

我猜想通过像这样设置你的 shell-command-switch,你正在你的 .profile 或系统配置文件中执行代码路径,这取决于 shell 中的作业控制。

我将通过在正确的代码路径中定义您需要的别名来修复此错误,以便它们出现在不是以 -i 开头的 shell 中

您可以尝试将-i 替换为--rcfile .aliases 或类似的东西,以便emacs 中的alias 与您的登录shell 中的alias 没有区别。如果您的 .bashrc 对您的工作很重要,请创建一个类似 .bashrc.emacs 的文件,其中包含内容

source .bashrc
source .aliases

并在您的(setq) 指令中使用--rcfile .bashrc.emacs 指向该文件。

您在哪里定义别名? Ubuntu 的 .bashrc 读取 .bash_aliases,这也应该发生在非交互式 shell 上。

【讨论】:

以上是关于如何在 ubuntu 上的 emacs 中运行 shell 命令,同时避免 bash 作业控制错误?的主要内容,如果未能解决你的问题,请参考以下文章

如何让 Emacs 使用我的 .bashrc 文件?

如何更改emacs上的光标颜色

如何在 emacs - haskell 模式下运行 haskell 应用程序?

ubuntu12.04中用emacs进行shell编程怎么配置呢?

如何更改emacs上的光标颜色

sudo如何在Ubuntu上使用Emacs编辑本地文件?