【发布时间】:2014-08-11 10:20:12
【问题描述】:
应用程序和命令有什么区别?例如关于which 命令。两者都是/包含可执行文件。
OSX 中的某些可执行文件是“命令”,旨在从命令行运行(例如 cat、less、python)。其他可执行文件包含在应用程序包中(Preview、Idle)。两者之间有什么逻辑上的区别吗?
一方面,OS X 中的 unix which 命令似乎是这样认为的:
当我在 OSX 终端中使用which 命令时,我希望能够找到我的应用程序(例如)Preview.app。
但以下均不返回任何结果:$which Preview$which Preview.app
但是$which python
确实返回/usr/bin/python
但另一方面,这种排除应用程序和包含命令的做法似乎是任意的。运行Idle(应用程序)和python 的结果几乎相同。
应用程序和命令之间的区别仅仅是传统吗?即 /Applications 文件夹传统上没有放入 PATH 变量中,但没有理由不能包含它?
【问题讨论】:
-
which与您正在考虑的那种应用程序无关。我不知道你从哪里得到这样的印象。它是关于命令的,是的,它依赖于PATH。 -
Ken 我认为这很接近:应用程序与命令不同。
-
它们之间的区别仍然是我无法理解的。两者都是或包含可执行文件,并且都可以执行简单的任务或更复杂的任务,例如调用环境/解释器。在命令提示符下键入
python会导致与运行 Python 附带的 Idle.app 非常相似的事情。这个例子似乎跨越了命令和应用程序。 -
您不应该从命令行运行大多数捆绑的应用程序。您可以以这种方式运行它们,但它可能会产生不好的副作用。例如,在应用程序中运行可执行文件总是会创建应用程序的新实例。并非所有应用程序都能处理同时运行的多个实例。此外,很少有应用程序是在命令行上进行交互的,向 stdout 产生有用的输出,或通过 stdin 获取输入。您是否正在寻找
open命令? -
将
/Applications放入PATH将无济于事。应用程序包的可执行文件隐藏在其中,通常位于Foo.app/Contents/MacOS/Foo。命令仅在PATH中列出的目录内搜索立即,而不是在其子目录中搜索。/Applications内通常没有任何命令。
标签: macos command-line terminal path