首页 > 解决方案 > 如何在没有 Brew 的情况下重新创建 Brew 别名?

问题描述

由于我的组织中的安全更新,我不能再使用 brew 来利用我组织的 repo 来安装包。但是,我可以手动下载 brew 正在安装的 .jar 文件。

所以以前我做过:

brew tap <repo>
brew install <package>
<package> # Run the package from anywhere

我可以从任何地方运行这个包,只需在终端中输入。十分简单。

通常 Brew 安装在usr/local/Cellar/<package>/some/internal/structure/<package.exe>. 但在此过程中,它使用别名和符号链接以及 $PATH [我对此感到困惑] 做一些事情,这样我就可以通过在终端中/usr/local/bin的任何位置键入来运行给定的包,它位于我的 $PATH中。<package>

我正在尝试重新创建这种行为。我能够手动下载 jar 文件并将它们放在一个文件夹/usr/local/bin/<package>中。如果我跑步,java -jar /usr/local/bin/<package>/<package.exe>那么一切都运行良好。

我如何获得它以便我可以<package>从终端的任何地方运行,比如使用 Brew?另外,为了百分百清楚,我想选择别名;我希望能够键入“abc”来运行 jar 文件。

标签: bashmacoshomebrewaliassymlink

解决方案


/usr/local/bin/可能已经在您的PATH变量中了。如果要检查,请使用 . 将其打印到终端echo "$PATH"。如果不是,您可以选择其中的其他目录之一或将其添加到。如果你想将该目录添加到你的PATH变量中,你想将它添加到相关的点文件中(可能~/.bashrc):

export PATH="/usr/local/bin:$PATH"

PATH是一个冒号分隔的目录列表,您的系统将在其中查找可执行文件。

现在,您可以编写一个简短的脚本来为您运行 java。例如,如果我们有一个名为 foo.jar 的 jar 文件,您可以编写一个简短的脚本,使用 foo.jar 的完整路径运行 java,如下所示:

/usr/local/bin/foo

#!/bin/bash

java -jar '/path/to/foo.jar' "$@"

偷偷摸摸的编辑:确保你给这个文件可执行权限:

chmod +x /usr/local/bin/foo

现在,在终端上,如果我在foo没有完整路径的情况下运行,它将运行这个脚本。

"$@"只是将您发送到此脚本的任何参数传递到 java 程序中。

这不是实现这一目标的唯一选择。你也提到了别名。你可以为你的 .bashrc 写一个别名来做同样的事情:

alias foo='java -jar "path/to/foo.jar"'

符号链接在这里并不是最好的选择。如果您的 jar 文件不在其中PATH并且您希望它在其中,这将是可以的。但是,该PATH变量实际上仅适用于可以直接执行的文件。如您所知,jar 文件不能。


推荐阅读