在AWS上,sudo用户和普通用户的主目录是不同的。sudo用户的主目录位于/root
,而普通用户的主目录通常位于/home/
。
以下是一个解决方法的代码示例,用于获取当前Java主目录:
import java.util.Map;
public class JavaHomeExample {
public static void main(String[] args) {
String javaHome = System.getProperty("java.home");
System.out.println("Java Home: " + javaHome);
String userHome = System.getProperty("user.home");
System.out.println("User Home: " + userHome);
String sudoUserHome = getSudoUserHome();
System.out.println("Sudo User Home: " + sudoUserHome);
}
public static String getSudoUserHome() {
Map env = System.getenv();
String sudoUser = env.get("SUDO_USER");
if (sudoUser != null) {
return "/home/" + sudoUser;
}
return null;
}
}
在上述代码中,System.getProperty("user.home")
将返回当前用户的主目录,而sudoUserHome
方法使用环境变量SUDO_USER
获取sudo用户的用户名,并将其与/home/
拼接以获得sudo用户的主目录。
请注意,如果没有sudo用户或未设置环境变量SUDO_USER
,则sudoUserHome
方法将返回null
。