bash - 如何在没有 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 文件。
解决方案
/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 文件不能。
推荐阅读
- python - 如何根据嵌套字典中满足的条件在字典上引入值?
- java - Struts 1 - 在操作类而不是表单中进行验证是否有任何问题?
- javascript - 仅在具有该类实例的类内部访问该类的私有成员
- webpack - 文件更新不会触发重新编译 - New Create React App
- python - Pandas.dataframe.plot 减少 x 轴上的刻度
- javascript - Javascript变量出现在控制台中但未定义
- c# - C# 中的 RichTextBox 自动换行,带有很长的文本行并且自动换行已关闭
- python - 从 python 访问 c++ 对象
- python - 如何设置和跟踪重量衰减?
- python - 与特征工程师一起使用一个热编码器时缺少 1 个必需的位置参数的错误