我有一个程序允许我定义 java 可执行文件 (/usr/bin/java
),但不允许我向可执行文件添加特定参数。
我希望每次都能够使用特定参数运行 Java 以启用安全管理器。
到目前为止,我已经尝试在/usr/bin/java
之后添加参数,所以它看起来像
java=/usr/bin/java -Djava.security.manager -Djava.security.policy=/home/java.policy
这不起作用,因为程序可能会检查文件是否存在。我尝试的另一种方法是制作一个名为 java
的 bash 脚本,其中包含:
/usr/bin/java -Djava.security.manager -Djava.security.policy=/home/java.policy $*
然后我将 java 路径设置为 /home/java
(我的脚本的位置)。然而,这也不起作用。有什么方法可以做到这一点吗?
谢谢。
最佳答案
将您的 java 调用放入 shell 脚本 java.sh
:
#!/bin/bash
/usr/bin/java -Djava.security.manager -Djava.security.policy=/home/java.policy $@
使用 chmod u+x java.sh
更改权限,然后使用 java=./java.sh
调用您的程序(根据需要调整脚本的路径)。
关于可执行位和 shebang 行的注释
shebang 行 (#!/bin/bash
) 和执行权限在这里都很重要。没有它们,exec*
系列的系统调用将失败,因为内核不知道如何处理该文件,或者由于缺少可执行位而导致执行被拒绝。
这在直接从 shell (./java.sh
) 运行时是不同的,因为大多数 shell 具有针对这种情况的一些兼容性特性,因此如果 它们将在 shell 中运行脚本exec*
失败。但是必须设置执行权限。
唯一不需要两者的情况是将脚本作为 shell 的参数:bash java.sh
。
关于java - 每次使用特定参数启动 Java,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29721262/