从 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
和$<
作为参数(根据perldoc perlvar
是“此进程的真实uid”,也可作为$REAL_USER_ID
和$UID
使用)并获得第一个返回值。
【讨论】:
【参考方案3】:您可能应该看看散列 %ENV。它包含有关运行脚本的环境的有用信息。
获取用户名的一个示例(在 Windows 中)是:
perl -E "say $ENV'USERNAME'"
对于 bash,将 USERNAME
替换为 LOGNAME
或 USER
。
【讨论】:
感谢您的回复。但我使用的是 linux env,它给出了错误提示 ENV: Undefined variable.以上是关于从 perl 脚本中提取用户名的主要内容,如果未能解决你的问题,请参考以下文章
简化bash脚本,以sudo身份运行时从命令中提取第一个单词