我面临着一个奇怪的问题;每当我在min
中运行一个命令时(这是一个简单的命令,一个复杂的应用程序或一个玩具示例),每个应该转向eshell
的输出都转到stderr
。
这是一个例子:
stdout
我得到以下内容:
#include <iostream>
int main()
{
std::cerr << "ERROR\n";
std::cout << "OUTPUT\n";
}
使用~ $ ./a.out 2> /dev/null
ERROR
OUTPUT
,shell
或外部终端启动相同的命令可以正常工作。即使在term
内启动dash
,sh
或bash
,然后启动该计划也可以。
这是eshell
错误吗?从我这边可能是一些错误的配置吗?
我的emacs版本为eshell
谢谢你, 尼古拉斯
答案 0 :(得分:0)
1.2 Eshell不是
Eshell不是bash或zsh等系统shell的替代品。想要在Emacs和外部进程之间移动文本时使用Eshell;如果您只想将输出从一个外部进程管道传输到另一个外部进程(然后是另一个,等等),请使用系统shell,因为Emacs的IO系统是面向缓冲区的,而不是面向流的,并且在此类任务中效率非常低。如果要在Eshell中编写shell脚本,请不要;要么写一个elisp库,要么使用系统shell。
有些事情Eshell表现不佳。它填补了IELM与你的系统外壳之间的利基,在那里有特殊的用例,并且在那个利基之外它不太理想。
这足以吓唬我使用它来支持bash或zsh。