术语:从任何目录调用终端命令?

术语:从任何目录调用终端命令?

语境:macOS Catalina zSh。最终目标是能够设置用户脚本,以便可以通过 CLI 在任意数据位置调用它们。

问题:这个词(术语)是什么:从任何目录调用的终端命令?正确的单词/短语将使我能够通过谷歌搜索主题并逐步实现下面定义的目标。

例子: 该命令ls可以从任何目录发出并返回输出。同样,当lsusb是用自制软件安装的: lsusb 可以在任何目录下工作:不知何故,当安装 lsusb 时,系统被配置为知道在哪里查找lsusb.

路径变量:我了解 $PATH 变量包含路径信息:

宝贝大:~用户$echo $PATH

回报

/usr/local/bin:/usr/bin:/bin:/usr/sbin:/sbin

我怀疑/etc/路径是在启动时配置$PATH:

宝贝大:~用户$cat /etc/paths

/usr/local/bin /usr/bin /bin /usr/sbin /sbin

输出路径似乎是文件系统层次结构,这提出了与我的目标类似的问题,但不是我的术语问题

目标:我想用谷歌搜索主题的单词/术语并学习最佳实践如何使脚本能够从任何目录运行。我面临着是否添加另一个路径或选择已配置到 $PATH 变量中的上述现有路径之一的决定。

能够在任意目录调用我的脚本具有重要的实用性:该脚本对 pdf 文件执行操作,这些文件可能位于文件系统中的任何位置。我的脚本调用一个可执行文件印章 pdf 文档

澄清: 主题不是提出的“子文件夹”问题:https://apple.stackexchange.com/q/366127/187540 这是一本很好的读物,因为它与目录管理有些相关。

答案1

据我所知,除了说应用程序/实用程序/脚本是或应该放置之外,没有特定的众所周知的术语来表达您似乎要问的问题在路径中,作为简写“在可执行搜索路径中包含的目录中”。不幸的是,短形式不太容易在谷歌上搜索到,长形式也很少使用。

如果您希望您的脚本可供所有用户使用,“标准”方法是将其添加(或链接)到/usr/local/bin,这将是由本地系统管理员管理的脚本和工具的预期位置,可供系统的所有用户使用。该目录通常包含在系统默认$PATH的用户目录中。

请注意,在您的示例中,/usr/local/bin列出了$PATH 系统标准工具的和/usr/bin目录。/bin这允许系统管理员覆盖/usr/local/bin通过放置例如某些工具的较新版本来使用与相应的标准系统工具完全相同的名称来设置标准工具。

如果该脚本的目的是仅限所有系统管理员,那么分别/usr/local/sbin是预期位置。然而,这并不总是自动添加到$PATH系统管理员的默认值中。

但是,如果您只想为自己设置它,最简单的方法是为您的脚本设置一个目录(例如$HOME/bin,尽管您可以将其命名为您想要的任何名称),并将其添加到$PATH您的个人登录脚本中的系统默认值。

如果您修改默认值$PATH,您可以完全替换现有值(不推荐,除非您知道自己在做什么),或者将您的自定义脚本目录添加到$PATH.

附加$HOME/bin到当前$PATH

export PATH="$PATH:$HOME/bin"

通过附加您的自定义目录,其中的脚本将被放置在搜索顺序的最后,保证您不会因为将脚本命名为与某些标准系统工具相同而意外地给自己带来问题。

相反,如果你能够用自己的工具覆盖标准工具,您可以将脚本/工具目录添加到$PATH

export PATH="$HOME/bin:$PATH"

要使此更改永久生效,从而影响所有 shell 会话并在重新启动后继续存在,只需将上面的行添加到您的~/.profile文件中(如果它尚不存在,您可以创建它)。

相关内容