如何在 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 - haskell 模式下运行 haskell 应用程序?