我想在脚本本身中提取用户名,执行perl脚本。
我正在从perl执行whoami
linux命令,如下所示,它运行良好。
my $whoami = `whoami`;
chomp $whoami;
print $whoami;
我的目的是远离从perl脚本调用系统命令。因此,我正在寻找仅限Perl 解决方案。我想知道是否有可用的CPAN模块可以提取系统信息。
您对此方面的建议表示赞赏。
答案 0 :(得分:7)
perl -le 'print scalar getpwuid $<'
答案 1 :(得分:3)
Perl可以直接映射到系统getpw*
函数。
这些例程与系统C中的对应例程相同 图书馆。在列表上下文中,各种get的返回值 例程如下:
($名称,$ passwd中,UID $,$ GID, $ quota,$ comment,$ gcos,$ dir,$ shell,$ expire)= getpw *
- 来自perldoc -f getpwuid
。
使用getpwuid
和$<
作为参数(根据perldoc perlvar
是“此过程的真实uid”,也可以$REAL_USER_ID
和{{1获得第一个返回值。
答案 2 :(得分:2)
你应该考虑哈希%ENV 。它包含有关运行脚本的环境的有用信息。
获取用户名的一个示例(在Windows中)将是:
perl -E "say $ENV{'USERNAME'}"
对于USERNAME
或LOGNAME
,请使用bash替换USER
。