如何在没有Brew的情况下重新创建Brew别名?

时间:2020-09-01 11:00:57

标签: bash macos homebrew alias symlink

由于我的组织机构进行了安全更新,因此我无法再使用brew进入我组织的存储库以安装软件包。但是,我可以手动下载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做一些事情(令我感到困惑),这样我就可以通过键入{{1 }}在终端的任何地方。

我正在尝试重新创建这种行为。我能够手动下载jar文件并将其放在文件夹/usr/local/bin中。而且如果我运行<package>,那么一切都会很好。

如何获取它,以便可以在终端中的任何位置(如Brew)运行/usr/local/bin/<package>?另外,只是要100%清除,我想选择别名。我希望能够键入“ abc”来运行jar文件。

1 个答案:

答案 0 :(得分: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文件不能。