由于我的组织机构进行了安全更新,因此我无法再使用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文件。
答案 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文件不能。