默认情况下,某些发行版会重置您的环境变量,以确保在 root 下执行的程序按预期运行。白名单中未指定的任何环境变量都不会带入您的根会话。
重置环境的指令以及允许的变量在/etc/sudoers
. (您需要权限才能查看/编辑此内容)。
例如,在我的 Fedora 16 机器上,我有
默认值 env_reset
默认值 env_keep = "颜色显示主机名 HISTSIZE INPUTRC KDEDIR LS_COLORS"
默认值 env_keep += "MAIL PS1 PS2 QTDIR USERNAME LANG LC_ADDRESS LC_CTYPE"
默认值 env_keep += "LC_COLLATE LC_IDENTIFICATION LC_MEASUREMENT LC_MESSAGES"
默认值 env_keep += "LC_MONETARY LC_NAME LC_NUMERIC LC_PAPER LC_TELEPHONE"
默认值 env_keep += "LC_TIME LC_ALL LANGUAGE LINGUAS _XKB_CHARSET XAUTHORITY"
请注意,XAUTHORITY
默认情况下不存在,我必须添加它。
如果您希望您的JAVA_HOME
envvar 继续使用,您可以在此处添加它。但是,要让这成为您需要做的全部,您需要添加PATH
到此列表中,这确实令人气馁。
所以在这个文件中也有如下一行:
默认值secure_path = /sbin:/bin:/usr/sbin:/usr/bin
这将是您$PATH
在 sudo 会话中的内容。只需确保您有一个指向要在其中一个文件夹中使用的 java 可执行文件的符号链接,就可以了。
(由于您收到“找不到命令消息”,因此java
您的安全路径上没有可执行文件,但如果有,您需要删除它,或者将新符号链接“更高”(较早)放在路径中)
备选方案 1
在文件中添加别名java
(例如alias java='/usr/java/latest/bin/java'
),例如/etc/bashrc
备选方案 2
java
在您的本地配置文件或 bashrc 文件中添加一个别名,该别名sudo
将保留您的别名。