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

我在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") 。 这是我可以推测使用我的别名以及命令。 这并没有给我工作上的问题,它让我使用我的别名。 我怎样才能使用我的别名,但避免这个问题?

我想通过设置你的shell命令开关,你正在执行你的.profile或系统配置文件中的代码路径,这取决于shell中的作业控制。

我将通过在正确的代码路径中定义所需的别名来解决此错误,以便在不以-i开头的-i

您可以尝试使用--rcfile .aliases或类似的东西来交换-i ,这样emacs中的alias就不会与登录shell中的alias不同。 如果您的.bashrc文件对您的工作有重要的意义,请使用.bashrc.emacs文件创建一个文件

 source .bashrc source .aliases 

并在你的(setq)指令中用--rcfile .bashrc.emacs指向那个文件。

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