我从这个网站在运行 Mac OS X 10.6.5 的 MacBook Air 上安装了 emacshttp://emacsformacosx.com/。我相信这就是以前被称为 cocoa emacs 的东西。我将它拖到我的应用程序文件夹中,从那里运行它时,它工作正常。我希望能够从终端运行它。经过一番谷歌搜索后,我尝试了open -a /Application/Emacs.app foo.txt
(foo.txt 是现有文件)。我得到了两个 emacs 窗口 - 一个带有欢迎屏幕,一个加载了 foo.txt。我尝试了 /Applications 目录中的几个应用程序,但它们似乎没有像这样表现。我使用自己的帐户(管理员帐户)安装了它,因此在执行操作后,ls -l
我/Application
注意到所有者和组与此文件夹中的其他条目不同。我像其他人一样将所有者和组递归更改为 root 和 wheel,但这没有帮助。现在唯一看起来有趣的是 ls -l 显示一个 @ 字符,它与扩展属性有关,但我不知道如何检查这些。
对于下一步该检查什么,有什么建议吗?
使用 open 命令是否是唯一可以运行该程序的方法?我可以使用 shell 脚本模拟它的功能吗?
答案1
您误解了open
工作原理:使用命令,open /Application/Emacs.app foo.txt
您告诉open
打开两个文件,即 Emacs 和 txt 文件,但这是两个不同的操作:首先,将启动 emacs,然后foo.txt
将加载.txt
文件的默认程序,在您的情况下显然是 Emacs。
只要 Emacs 是这种文件类型的默认 Emacs,只需使用open foo.txt
就可以在 Emacs 中打开该文件,但如果它不是默认的,你就必须使用open foo.txt -a /Applications/Emacs.app
(-a
开关告诉打开要使用什么应用程序)或者你可以将它作为参数传递给--args
这样的选项:open /Applications/Emacs.app --args foo.txt
。
答案2
这实际上有点奇怪;对于我的安装(我用 homebrew 完成的),open -a Emacs file.txt 工作正常……也许你应该重建你的 LaunchServices 数据库?但无论如何,你应该能够直接使用以下命令调用可执行文件
/Applications/Emacs.app/Contents/MacOS/Emacs file.txt