给定用户,如何回家?

Mat*_*ock 52 bash users shell-script

我的USER脚本中有一个变量,我想HOME根据该USER变量查看他的路径。我怎样才能做到这一点?

Jen*_*y D 85

有一个实用程序可以查找用户信息,而不管该信息是否存储在本地文件(如/etc/passwdLDAP 或其他方法)中。它被称为getent

为了从中获取用户信息,您运行getent passwd $USER. 你会得到一条看起来像这样的行:

[jenny@sameen ~]$ getent passwd jenny
jenny:*:1001:1001:Jenny Dybedahl:/home/jenny:/usr/local/bin/bash
Run Code Online (Sandbox Code Playgroud)

现在您可以简单地从中剪切主目录,例如使用剪切,如下所示:

[jenny@sameen ~]$ getent passwd jenny | cut -d: -f6
/home/jenny
Run Code Online (Sandbox Code Playgroud)


小智 16

您可以使用eval来获取某人的主目录。

eval echo "~$USER"
Run Code Online (Sandbox Code Playgroud)

至少对于本地用户来说,这肯定有效。我不知道像 LDAP 这样的远程用户是否使用eval.

  • @nwk 需要一个 `eval`。Bash 在变量扩展后不处理 `~foo`。 (6认同)
  • 不要在没有验证 `$USER` 扩展为 *just* 单个字母字符串的情况下使用它。 (4认同)
  • @RuiFRibeiro 它可以与 LDAP 一起正常工作,只需使用包含 LDAP 用户用户名的任何变量而不是“USER”。 (3认同)