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

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

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

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

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

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

【问题讨论】:

    标签: perl


    【解决方案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.
        猜你喜欢
        • 2014-07-18
        • 2021-09-23
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2014-06-09
        • 1970-01-01
        • 2012-04-28
        相关资源
        最近更新 更多