我正在编写一个 Bash 函数,该函数将在完成后向当前用户发送一封电子邮件。我想知道是否有规范或正常的方法来获取用户的电子邮件地址。我当前的计划是简单地使用$EMAIL
,这肯定会工作得足够好,但我不确定是否有更好或“正确”的方式来引用当前用户的电子邮件地址(当然,假设它已设置)。
请注意,我是不是尝试向机器的本地邮件发送电子邮件,但是却是远程地址。
答案1
如果您确实想这样做(“期望我的脚本的用户需要指定他们想要使用的地址”),您可以随时要求他们将他们的电子邮件地址放入~/.emailaddress
或另一个本地文件中。如果对其主目录和该文件有足够的权限,这可以工作。
正确的方法是设置本地邮件传递,并将其留给用户(如果他们想要使用本地邮件或使用~/.forward
.
在我看来,任何明智的方法都会将“外部”电子邮件地址存储在文件中,而不是环境变量中。有很多情况可能会导致环境变量无法在脚本中设置/可用。作为 root,您可以强制文件可读,但不能强制用户了解他们将 envvar 定义放在何处以及如何放置。
没有“最好的方法”可以做到这一点。电子邮件地址是用户信息,因此属于您的用户管理。如果您使用 LDAP,dawud 的答案会告诉您在哪里放置和检索它。如果您使用的是普通的 old /etc/passwd
,那么它有一个注释字段。如果您想将其存储在他们的主目录中(当您谈论用户在其 shell 环境中提供该信息时,您就是这样做的),我为您提供了两种实现此目的的方法,具体取决于您是否拥有/想要本地邮件。
如果您已经在使用 LDAP,那么遵循 dawud 的建议是最适合您的方法。如果您不这样做,那么仅仅为了存储一些电子邮件地址而设置 LDAP 就太过分了,而且不是最好的方法。如果你想要一个明确的答案,你需要更具体地描述你的问题。
答案2
没有这样的事。
不过,您可以期待mail
属性存在于 LDAP 目录中,按照RFC 4524。
有命令行工具,例如ldapsearch(1)
,您可以在 shell 脚本中使用来检索这些值。
当然,您也可以将用户信息存储在其他地方的数据库中。