【问题标题】:How to Recreate Brew Aliasing, Without Brew?如何在没有 Brew 的情况下重新创建 Brew 别名?
【发布时间】:2020-12-20 11:48:05
【问题描述】:

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

所以我之前做过:

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

我可以在任何地方运行这个包,只需在终端输入。轻松愉快。

通常 Brew 安装在 usr/local/Cellar/&lt;package&gt;/some/internal/structure/&lt;package.exe&gt; 中。但是在此过程中,它会使用别名和符号链接以及 $PATH [我对此感到困惑] 进行某些操作,以便我可以通过在我的 $PATH 中的 /usr/local/bin 运行给定的包,只需在任何地方键入 &lt;package&gt;终端。

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

如何获取它以便可以从终端的任何位置运行&lt;package&gt;,例如使用 Brew?另外,为了百分百清楚,我想选择别名;我希望能够输入“abc”来运行 jar 文件。

【问题讨论】:

  • 我认为“喜欢 brew”的最简单方法是……使用 brew,但使用指向 jar 的自定义包文件。您是否需要手动下载 jars 或者 curl 命令可以为您完成?

标签: bash macos homebrew alias symlink


【解决方案1】:

/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 文件不能。

【讨论】:

  • 感谢杰森的解释!作为记录,别名方法并没有立即对我有用。我收到了 java 权限错误。但是,编写一个 bash 脚本并将其粘贴在 /usr/local/bin 中确实有效。现在,我必须运行“bash foo”来运行脚本,而不仅仅是“foo”。但后来我用 alias foo='bash "foo"' 创建了一个别名,这很有效。我不能告诉你为什么。但无论如何感谢您的帮助!
  • @Alan 这很奇怪。听起来它没有可执行权限。试试这个:chmod +x /usr/bin/foo。然后尝试不使用别名再次运行它。
  • 这正是我想要的。如果可以的话,我会给你接受的评论。谢谢!
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2023-04-03
  • 2020-06-28
  • 1970-01-01
  • 1970-01-01
  • 2013-05-21
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多