从 perl 脚本中提取用户名

Posted

技术标签:

【中文标题】从 perl 脚本中提取用户名【英文标题】:Extract user name from perl script 【发布时间】:2013-10-07 10:57:55 【问题描述】:

我想在脚本本身中提取用户名,执行 perl 脚本。

我正在执行来自 perl 的whoami linux 命令,如下所示,它运行良好。

my $whoami = `whoami`;
chomp $whoami;
print $whoami;

我的目的是避免从 perl 脚本调用系统命令。因此,我正在寻找 Perl only 解决方案。我想知道是否有任何可用的 CPAN 模块可以提取系统信息。

您在这方面的建议将不胜感激。

【问题讨论】:

【参考方案1】:
perl -le 'print scalar getpwuid $<'

【讨论】:

【参考方案2】:

Perl 可以直接映射到系统 getpw* 函数。

这些例程与系统 C 中的对应例程相同 图书馆。在列表上下文中,来自各种 get 的返回值 套路如下:

($name,$passwd,$uid,$gid, $quota,$comment,$gcos,$dir,$shell,$expire) = getpw*

--来自perldoc -f getpwuid

使用getpwuid$&lt; 作为参数(根据perldoc perlvar 是“此进程的真实uid”,也可作为$REAL_USER_ID$UID 使用)并获得第一个返回值。

【讨论】:

【参考方案3】:

您可能应该看看散列 %ENV。它包含有关运行脚本的环境的有用信息。

获取用户名的一个示例(在 Windows 中)是:

perl -E "say $ENV'USERNAME'"

对于 bash,将 USERNAME 替换为 LOGNAMEUSER

【讨论】:

感谢您的回复。但我使用的是 linux env,它给出了错误提示 ENV: Undefined variable.

以上是关于从 perl 脚本中提取用户名的主要内容,如果未能解决你的问题,请参考以下文章

使用 perl 脚本从 HTML 文件中提取信息

Perl 脚本中的 CRUD cron 条目

在网页上运行 perl 脚本后保存文件

简化bash脚本,以sudo身份运行时从命令中提取第一个单词

从 perl 脚本调用 unoconv 时设备的 ioctl 不合适

如何以 root 身份运行 Perl 脚本但仍会影响用户 gconf 设置