当前位置:  开发笔记 > 编程语言 > 正文

如何在linux或unix上找到用户的主目录?

如何解决《如何在linux或unix上找到用户的主目录?》经验,为你挑选了4个好方法。

如何在Grails中找到任意用户的主目录?在Linux上它通常是/ home/user.但是,在某些操作系统上,例如OpenSolaris,路径为/ export/home/user.



1> Daniel Hille..:

通常你使用该语句

String userHome = System.getProperty( "user.home" );

在任何平台上获取用户的主目录.请参阅getProperty的方法文档,了解您还可以获得的其他内容.

使用此解决方法可能存在您可能希望避免的访问问题(使用安全策略文件)


OP要求任意用户的家.但是`user.home`是当前用户之一.如果您从当前用户主页转到父主目录,然后转到具有指定用户名的目录,此方法是否始终有效?

2> Joachim Saue..:

对于类UNIX系统,您可能希望echo ~username使用shell 执行" "(因此用于Runtime.exec()运行{"/bin/sh", "-c", "echo ~username"}).


这里要非常精确 - 在POSIX下保证`/ bin/sh`是一个符合Bourne的shell,但是tilde扩展(`~`和`~user`)不是这种shell的必需功能之一.Linux发行版使用BASH作为`/ bin/sh`,代码扩展可以使用.如果你在其他UNIX操作系统下使用`/ bin/sh`运行`echo~`,你可以只返回代字号(例如``〜"`)而不是主目录路径.

3> 小智..:

在Java上试试这个:

System.out.println("OS: " + System.getProperty("os.name") + ", USER DIRECTORY: " + System.getProperty("user.home"));



4> 小智..:

对于任意用户,作为网络服务器:

private String getUserHome(String userName) throws IOException{
    return new BufferedReader(new InputStreamReader(Runtime.getRuntime().exec(new String[]{"sh", "-c", "echo ~" + userName}).getInputStream())).readLine();
}

推荐阅读
ifx0448363
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有