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

如何在ubuntu上的emacs中运行shell命令,同时避免bash作业控制错误?,bash,shell,ubuntu,emacs,Bash,Shell,Ubuntu,Emacs,我在ubuntu中安装了emacs(使用sudo apt get install emacs)。我遇到的问题是,当我尝试从emacs内运行shell命令(例如M-!ls)时,输出前面会有以下内容: bash: cannot set terminal process group (-1): Invalid argument bash: no job control in this shell 在我的.emacs中,我有一个选项(setq shell命令开关“-ic”)。这样我就可以使用别名和命令

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

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

在我的
.emacs
中,我有一个选项
(setq shell命令开关“-ic”)
。这样我就可以使用别名和命令了。这并没有给我的工作问题,它让我使用我的别名。如何使用别名但又能避免此问题?

我猜,通过这样设置shell命令开关,您正在执行依赖于shell中作业控制的
.profile
或系统概要文件中的代码路径

我将通过在正确的代码路径中定义所需的别名来修复此错误,以便这些别名出现在并非以
-I
开头的shell中

您可以尝试用
--rcfile.alias
或类似的东西交换
-i
,这样emacs中的
别名就不会与登录shell中的
别名有所不同。如果您的.bashrc有重要的工作内容,请创建一个类似.bashrc.emacs的文件,其中包含以下内容

source .bashrc
source .aliases
并在
(setq)
指令中指向带有
--rcfile.bashrc.emacs
的文件


你在哪里定义别名的?Ubuntus.bashrc读取.bash_别名,这种情况也应该发生在非交互式shell上。

您编写了使用
M-x ls
执行shell命令的代码,但它不是标准命令。Shell命令可以通过运行,例如
M-
M-x外壳
。这些对你有用吗?可能是@N.N.的副本。对不起,这是一个打字错误。我是说普通的M-!不起作用的东西。不使用“-ic”开关时可能发生的重复情况?