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

艾伦

由于组织的安全更新,我不能再使用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做一些事情(令我感到困惑),这样我就可以/usr/local/bin通过<package>在终端中的任意位置运行来自$ PATH中的给定包

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

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

杰森

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

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章

如何在不重新创建小部件的情况下重新渲染小部件-Flutter / Dart

请在构建器中提供“迁移”或在构建器中调用fallbackToDestructiveMigration,在这种情况下,Room将重新创建所有表

GIT SVN:在没有错误的合并父级的情况下获取重新创建的SVN分支

如何在不使用路由器的情况下强制Aurelia销毁/重新创建View / viewModel对

如何在没有PGID的情况下创建链接

是否可以在不重新创建或修改geom图层的情况下增加ggplot美观度?

如何在不重新创建Docker容器的情况下更新服务器设置

SQL Server-在不删除和重新创建代理的情况下启用代理

如何在所有已安装的软件包都离线的情况下重新创建python虚拟环境?

如何在没有ObjectNode的情况下创建ValueNode?

如何在不重新创建实例的情况下将数据添加到pandas.DataFrame

如何在无节点的情况下通过Brew升级纱线

如何在不重新创建新实例的情况下重置实例类的成员?

如何在不重新创建请求处理程序的情况下更改或扩展express-graphql上下文?

默认情况下如何使Laravel中每个新创建的表的所有列都可填充

无法在不重新创建分组数据框的情况下多次使用子图

是否可以在不重新创建窗口的情况下切换全屏显示?

如何在不重新创建SSH代理的新实例的情况下ssh-添加SSH密钥?

docker compose版本2在不应该创建容器的情况下重新创建容器

如何在没有参考的情况下设置新创建的 TextField 的大小

如何在不重新创建分区的情况下调整分区大小

如何在不重新创建 Map 的情况下从 ES6 Map 对象中删除前 N 个项目?

在没有服务中断的情况下重新创建部署

ViewModel 在尝试在没有工厂的情况下重新创建时崩溃

在不重新创建图形的情况下更改 dask 延迟输入

如何在不使用它的情况下重新创建 += 运算符

我可以在不重新创建 .mod 文件的情况下编译 f90

如何在没有 ThreadGroup 的情况下创建线程?

如何在不重新创建的情况下共享 Switch 及其容器的点击事件