问题起源:
在emacs org-babel 中运行C语言代码, 在运行结果中, 会夹杂一段无意义的啰嗦信息.
[]\1337 RemoteHost=xxx;CurDir=xxx;shell:zsh;IntegrationVersion:5.
问题探究:
shell-command
发现不仅仅在org-babel 中出现此信息, 运行shell-command也会出现此信息.
由此断定不是org-babel的问题, 而是shell-command的输出结果有问题.
iTerm2
通过在网上查找shell-command的用法, 并研究函数代码, 并没有发现解决的办法.
于是转而研究杂质信息的内容, 发现其中有一句 IntegrationVersion, 这让我想到了Iterm2.
我不是使用MAC自带的Terminal, 而是使用iTerm2作为默认终端, iTerm为了功能性, 会自行添加许多额外的信息,
而emacs调用shell-command时就会连额外的信息一起获取,从而出现杂质信息.
问题解决:
iTerm2->Install Shell Integration
对Integration 进行升级.
重新运行shell-command 和org-babel, 得到了正常的结果. 问题解决.
问题总结:
此类问题难以通过搜索直接查找到解决办法, 因为用户环境,软件版本,自定义配置的不同, 必须逐步排查.