我想在 macOS 中像在 Linux 上一样简单地运行应用程序:只需在终端中输入应用程序的名称。最好的方法是什么?
例如:我刚刚安装了 Atom Nightly,想从终端使用“atom”或“atom-nightly”之类的命令运行它。
别名对此有用吗alias atom="/Applications/Atom\ Nightly.app"
?奇怪的是,我收到一些权限被拒绝的错误。
最快的方法是什么?(我真的很感激不必为安装的每个应用程序都这样做)。
答案1
我建议你使用:
alias atom="open -a Atom\ Nightly"
该open -a $APPNAME
命令可以智能地根据用户可见的名称来查找 GUI 应用程序。
macOS GUI 应用程序被打包为“.app 包”或“程序包”,它们实际上是特殊的目录层次结构。传统的 Unix shell(如 bash 或 zsh)要求您调用的文件是可执行文件;要么是 shell 脚本,要么是可执行机器代码二进制文件;您无法执行目录。因此,如果您想从命令行调用 GUI 应用程序,则必须调用其隐藏在 .app 包内的实际可执行文件,通常是这样的:
/Applications/Atom\ Nightly.app/Contents/MacOS/Atom\ Nightly
您收到权限被拒绝错误的原因是您要求您的 shell 执行一个目录,但该目录是不可执行的(目录上的“x”权限位表示它是可遍历的,但这超出了该问题的范围)。
请注意,只有当 shell 位于 GUI 会话中时,例如在终端仿真器应用中运行的 shell,才能从 shell 启动 GUI 应用。它无法从与任何 GUI 会话无关的 shell 启动,例如当您从其他计算机通过 SSH 连接到 Mac 时。