【问题标题】:How do you set default application for `open` command in terminal based on file extension type?如何根据文件扩展名类型在终端中为“打开”命令设置默认应用程序?
【发布时间】:2014-08-21 14:06:44
【问题描述】:

前段时间,我在命令行终端中将 Sublime text 2 设置为 GIT 的默认编辑器。我现在想将其更改为 LightTable,但遇到了一些麻烦。我已将 VISUALEDITOR 环境变量都设置为 LightTable,这对大多数扩展都有效。但即使我也将 .gitconfig 文件的 editor 变量设置为 LightTable,使用此命令的几种变体:

git config --global core.editor "'/Applications/LightTable.app' -w"

还有这个:

export GIT_EDITOR=LightTable

它继续使用 sublime text 打开 .md 文件 2. 其他文件扩展名也正在使用 TextEdit 或其他应用程序打开。有没有一种简单的方法来控制混乱并根据扩展设置我的默认打开应用程序?我已经阅读了 open 的手册页,其中提到了 LaunchServices,但我在硬盘上找不到它。我在运行 OSX 的 mac 上使用 bash 和 Unix(Darwin)。提前致谢!

【问题讨论】:

  • 这个问题对于 Stackoverflow 来说确实是题外话(apple.stackexchange.com 会更好),但是设置 LaunchServices 关联的常规方法是在 Finder 中选择一个文件,使用 Get Info 命令, Open With 设置和Change All 按钮。
  • 对不起内德。实际上,对于给定的论坛,什么是合适的问题,我实际上越来越不清楚。有没有像地图集之类的东西?另外,有没有办法将问题转移到该论坛,而不必重新写出来?
  • 感谢您的回答。它几乎解决了这个问题。我仍然不清楚如何从终端执行此操作,或者具体来说是什么变量导致它首先使用 Sublime Text 2 打开。
  • 应用程序包可以指定它们准备处理的文件类型;他们在Info.plist 中这样做。在一个以上的应用程序准备处理相同的文件类型的常见情况下,一个赢了有点废话。最有可能的是最近安装的应用程序。但在 OS X 的整个生命周期中,Apple 已经对其进行了多次调整,这是一种神奇的魔法。我相信您可以从终端更改文件类型关联,但这很痛苦。
  • WRT 这里有什么主题,查看帮助页面:stackoverflow.com/help/on-topic

标签: macos git bash environment-variables lighttable


【解决方案1】:

问题在于/Applications/LightTable.app 不是可执行文件,它是一个应用程序包。您可以从 Finder 双击应用程序包,但不能从终端运行它们。自己看

$ /Applications/LightTable.app ./myfile.txt
zsh: permission denied: /Applications/LightTable.app

您必须指定完整的可执行路径,例如LightTable.app/Contents/MacOS/LightTable。我不知道它到底是什么。

【讨论】:

  • 当然可以从命令行启动应用程序包。这正是open 命令的作用。见man 1 open
  • This 解释了 LaunchServices 以及扩展的 open 命令如何能够处理捆绑包。但我仍然不确定“了解”和“启动”是一回事。我刚刚搜索了LightTable.app目录,找不到以/LightTable结尾的简单可执行路径。
  • 在 OS X 应用程序包中,可执行文件在应用程序的 Info.plist 中指定。可执行文件通常在<appname>.app/Contents/MacOS/ 中找到。但这与您的问题并不密切。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2012-01-09
  • 2015-05-27
  • 2021-12-30
  • 1970-01-01
相关资源
最近更新 更多