我有一台服务器,其中有一个来自自定义位置的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] 删除。
我来说两句