linux下终端sudo java提示“command not found”解决办法



linux下用sudo运行java程序时,要注意此时用户目录为/root,而不是/home/yourname之类的。如果没注意到这一点,就可能会遇到这样一种情况:某个java相关的组件把某些配置默认放在/home/yourname,而你用sudo启动的java程序却又去/root下找这个文件,结果没找到; 而如果相关的模块又不报错或者不够高调的报错,你就很难发现错在哪里。

 
   这种情况一般是因为你的root用户下没有配置java的路径,sudo的环境变量和普通用户的环境变量不一样。sudo的环境变量时集成的root用户的,sudo对应的PATH变量一般是:/sbin:/usr/sbin:/bin:/usr/bin。
 
  可以使用sudo `which java` -jar XX.jar试试。
 
  另外,换一种jdk的配置方法也是可以解决这个问题的。 之前修改的/etc/profile的配置,后来改的是/etc/environment(注意在/etc/environment中不要export PATH=...,不然会出现卡在登陆界面的情况)。配置完/etc/environment后source /etc/environment,sudo java就可以执行了。
 
附注:  
 
  (1)/etc/environment是设置整个 系统的环境,而/etc/profile是设置所有用户的环境,前者与登陆用户无关,后者与登陆用户有关。系统应用程序的执行与用户环境可以是无关的,但与系统环境时相关的,所以当你登陆时,你看到的提示信息,如日期、时间信息的显示格式与系统环境的LANG是相关的,缺省LANG=en_US,如果系统环境LANG-zh_CN,则提示信息是中文的,否则是英文的。
 
  (2)登陆系统时shell读取的顺序应该是/etc/profile -> /etc/environment -> $HOME/.profile -> $HOME/.env。
 
  (3)如果同一个变量在用户环境(/etc/profile)和系统环境(/etc/environment)有不同的值那应该以用户环境为准。

  • 0
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值