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

  我在ubuntu 12.04里想启动一个java程序,sudo java -jar xxx.jar,可是结果提示sudo:java:command not found。  java

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

   这种状况通常是由于你的root用户下没有配置java的路径,sudo的环境变量和普通用户的环境变量不同。sudo的环境变量时集成的root用户的,sudo对应的PATH变量通常是:/sbin:/usr/sbin:/bin:/usr/bin。ubuntu

  能够使用sudo `which java` -jar XX.jar试试。变量

  另外,换一种jdk的配置方法也是能够解决这个问题的。 以前修改的/etc/profile的配置,后来改的是/etc/environment(注意在/etc/environment中不要export PATH=...,否则会出现卡在登录界面的状况)。配置完/etc/environment后source /etc/environment,sudo java就能够执行了。jdk

 

附注:  配置

  (1)/etc/environment是设置整个系统的环境,而/etc/profile是设置全部用户的环境,前者与登录用户无关,后者与登录用户有关。系统应用程序的执行与用户环境能够是无关的,但与系统环境时相关的,因此当你登录时,你看到的提示信息,如日期、时间信息的显示格式与系统环境的LANG是相关的,缺省LANG=en_US,若是系统环境LANG-zh_CN,则提示信息是中文的,不然是英文的。file

  (2)登录系统时shell读取的顺序应该是/etc/profile -> /etc/environment -> $HOME/.profile -> $HOME/.env。程序

  (3)若是同一个变量在用户环境(/etc/profile)和系统环境(/etc/environment)有不一样的值那应该以用户环境为准。command

相关文章
相关标签/搜索