安装 OpenNMS 时遇到了一些困难。问题已解决,但它让我想知道......
为什么这不起作用:
[nac@localhost /]$ cd opt/opennms/bin/
[nac@localhost bin]$ runjava -s
-bash: runjava: command not found
...但这确实:
[nac@localhost /]$ opt/opennms/bin/runjava -s
runjava: Looking for an appropriate JRE...
runjava: Checking for an appropriate JRE in JAVA_HOME...
runjava: skipping... JAVA_HOME not set
runjava: Checking JRE in user's path: "/usr/bin/java"...
runjava: found an appropriate JRE in user's path: "/usr/bin/java"
我正在使用cygwin。 ssh 进入 Fedora 盒子。如果有帮助的话输出是绿色的 ls /opt/opennms/bin
......
答案1
您的$PATH
不包含当前目录.
.因此,runjava
当您尝试在没有路径的情况下执行位于其目录中的可执行文件时,将找不到该可执行文件。
它也不包含/opt/opennms/bin
.如果完成了,键入runjava
(在任何目录中)就会在那里找到可执行文件。
几个解决方案:
- 始终使用可执行文件的路径
/opt/opennms/bin/runjava
,或者./runjava
如果您位于/opt/opennms/bin
目录中。 添加
/opt/opennms/bin
到您的路径。为此,请编辑 shell 初始化文件(.bash_profile
或.bashrc
forbash
)并添加以下行PATH="$PATH:/opt/opennms/bin"
然后重新启动 Cygwin 会话。
创建别名:
alias runjava=/opt/opennms/runjava
这将被添加到 shell 启动文件中。这将运行
runjava
可执行文件,就好像您在发出命令时键入了它的完整路径一样runjava
。
您不想添加.
到PATH
变量中。有关此问题的讨论,请参阅问题“添加 . 是否安全?我的路径?怎么会?”
答案2
因为.
不是你的一部分$PATH
。 Unix 将仅在 .txt 中列出的目录中搜索可执行程序$PATH
。
此外,存在.
安全$PATH
风险,所以不要这样做。