我想在mongo shell中设置一个外部编辑器,但是我收到了这个错误。
sh: /Applications/CodeRunner.app: is a directory
editor exited with error (32256), not applying changes
正如mongodb doc所说,我在启动mongo shell之前执行了以下操作。
export EDITOR='/Applications/CodeRunner.app'
echo $EDITOR
/Applications/CodeRunner.app
open $EDITOR
我确保我可以启动编辑器' CodeRunner'通过运行echo $EDITOR
。
在此之后,我进入了mongo shell并执行了以下操作,但收到了错误。
var obj = {}
edit obj
sh: /Applications/CodeRunner.app: is a directory
editor exited with error (32256), not applying changes
可以请任何人告诉我我做错了什么以及如何解决这个错误?
答案 0 :(得分:0)
MacOS .app
"文件"您在Finder中看到的实际上是application bundle,其中包含目录和文件结构。您可以通过在ls -laR /Applications/CodeRunner.app
的终端会话中列出文件,或者在Finder中右键单击CodeRunner.app并选择"查看包内容"来查看封面。从菜单中。
实际的可执行文件可以在Contents / MacOS目录中找到,因此EDITOR变量的正确设置应为:
EDITOR="/Applications/CodeRunner.app/Contents/MacOS/CodeRunner"
但是,我使用MongoDB 3.6.3 shell测试了CodeRunner 2.3,并且作为mongo
shell的编辑器,它没有像预期的那样工作。
设置EDITOR变量并在edit foo
shell中运行mongo
启动CodeRunner,其中包含一个内容为foo
的临时文件(到目前为止,这么好)。遗憾的是,保存此文件或关闭CodeRunner中的选项卡不会将控制权返回给mongo
shell。我发现我必须退出CodeRunner应用程序才能返回已编辑的结果并恢复我的mongo
shell会话。
如果你的目标是在shell中使用GUI编辑器来实现JavaScript函数,一种方法是将JavaScript代码保存在文件中,并使用load()
command在mongo
shell中运行它保存在首选编辑器中后。或者,您可以使用代码编辑器查看MongoDB管理工具(有很多,开源和其他)。 DbKoda就是这样一个跨平台和开源的例子。
如果您需要使用数据或查询结果但不需要任何自定义函数,我建议您使用MongoDB Compass等数据管理用户界面。