我已经安装了jdk,但是当我尝试使用java命令时,它说“找不到命令”。
然后我在.bashrc中为我的帐户设置环境变量,它可以正常工作。
export JAVA_HOME=/usr/java/jdk1.7.0_03
export CLASSPATH=.:$JAVA_HOME/jre/lib/rt.jar:$JAVA_HOME/lib/dt.jar:$JAVA_HOME/l\
ib/tools.jar
export PATH=$PATH:$JAVA_HOME/bin
然而,当我尝试使用sudo来执行java时,它又说了一遍。所以我使用sudo -s
切换到root,将它们放入/ etc / profile,然后执行source /etc/profile
如果我以root身份登录但是在我返回自己的帐户并使用sudo java
之后仍然会说sudo:java:command not found并且那些环境变量变为空白,则此方法有效。
我该怎么做才能解决问题?我想这应该很容易解决。
答案 0 :(得分:4)
默认情况下,某些发行版会重置您的环境变量,以确保在root下按预期执行的程序。未在白名单中指定的任何环境变量都不会进入根会话。
在/etc/sudoers
中定义了重置为环境的指令以及允许的变量。 (您需要具有查看/编辑权限的权限。)
例如,在我的Fedora 16盒子上,我有
Defaults env_reset Defaults env_keep = "COLORS DISPLAY HOSTNAME HISTSIZE INPUTRC KDEDIR LS_COLORS" Defaults env_keep += "MAIL PS1 PS2 QTDIR USERNAME LANG LC_ADDRESS LC_CTYPE" Defaults env_keep += "LC_COLLATE LC_IDENTIFICATION LC_MEASUREMENT LC_MESSAGES" Defaults env_keep += "LC_MONETARY LC_NAME LC_NUMERIC LC_PAPER LC_TELEPHONE" Defaults env_keep += "LC_TIME LC_ALL LANGUAGE LINGUAS _XKB_CHARSET XAUTHORITY"
请注意,XAUTHORITY
默认不存在,I had to add it。
如果您希望JAVA_HOME
envvar继续使用,可以在此处添加。但是,为此您需要执行此操作,您需要将PATH
添加到此列表中,这是非常不鼓励的。
因此,此文件中的行如下所示:
Defaults secure_path = /sbin:/bin:/usr/sbin:/usr/bin
这将是你的sudo会话中的$PATH
。只要确保你有一个符号链接到你想在其中一个文件夹中使用的java可执行文件,你就可以了。
(由于您收到“命令未找到消息”,因此您的安全路径上没有java
个可执行文件,但如果有,您需要删除它,或者放置新的符号链接“更高的“(早先)在路径中)
备选方案1
在java
等文件中为alias java='/usr/java/latest/bin/java'
添加别名(例如/etc/bashrc
)
备选方案2
在您的本地个人资料或bashrc文件中为java
添加别名,为sudo
that will preserve your aliases添加别名。
答案 1 :(得分:1)
-E The -E (preserve environment) option indicates to the security policy that the user wishes
to preserve their existing environment variables. The security policy may return an error
if the -E option is specified and the user does not have permission to preserve the environment.
答案 2 :(得分:0)
您可能希望使用类似update-alternatives
的内容(不确定这是否适用于所有发行版)。
它在/ usr / bin中创建和管理符号链接(即可供所有人使用的可执行文件)。
使用示例:sudo update-alternatives --install java java /path/to/java/home/bin/java
我认为java可以根据它的可执行位置提取JAVA_HOME
的位置。
答案 3 :(得分:0)
检查jdk文件夹的权限,确保它Using System.Speech;
Using System.Speech.Recognition;
。
答案 4 :(得分:0)
我通过
解决了这个问题Defaults secure_path="/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/snap/bin:$JAVA_HOME/bin"
然后将$ JAVA_HOME / bin放入
run_prettify.js