为什么即使`sudo su -l -c“ echo $ PATH”`显示了Java二进制文件的位置,`sudo su -l -c“ java”`也不起作用?

永无止境

我有一台服务器,其中有一个来自自定义位置的tarball中的Java二进制文件,以及以下内容/etc/bash.bashrc

export JAVA_HOME=/path/to/java/home
export PATH=$JAVA_HOME/bin:$PATH

当我跑sudo su -l -c "java",我得到-su: java: command not found但是,当我sudo su -l直接进入时,我可以正常运行java

此外,sudo su -l -c "echo $PATH还包括的位置java

为什么sudo su -l -c "java"无法运行?

编辑:即使/etc/bash.bashrc不是~/.bashrc,相同的推理也适用于链接的问题/答案。

环尾

dhag解释了为什么$PATH看起来正确,即使事实并非如此。

路径未更改的原因很可能su不是交互式运行外壳程序,这意味着要么bash.bashrc最初没有执行,要么在执行任何操作之前退出,因为它检测到不是交互式运行。

您将必须指定完整路径而不是命令名称,或者找出默认路径的设置位置并在此进行更改。

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

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

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章