如何获取执行我的 Perl 脚本的用户的名称?

新手上路,请多包涵

我有一个脚本需要知道它是从哪个用户名运行的。

当我从 shell 运行它时,我可以轻松地使用 bash 提供的 $ENV{“USER”}。

但显然 - 然后从 cron 运行相同的脚本,也通过 bash - $ENV{“USER”} 未定义。

当然,我可以:

 my $username = getpwuid( $< );

但它看起来不太好 - 有没有更好/更好的方法?它不必独立于系统,因为该脚本是供我个人使用的,并且只能在 Linux 上运行。

原文由 user80168 发布,翻译遵循 CC BY-SA 4.0 许可协议

阅读 602
2 个回答

crontab 设置 $LOGNAME 所以你可以使用 $ENV{"LOGNAME"}$LOGNAME 默认情况下也在我的环境中设置(虽然没有查看设置的位置)所以您可能只能使用 $LOGNAME 而不是 $USER .

虽然我同意黑客的观点,但不知道 getpwuid 有什么问题。

原文由 Vinko Vrsalovic 发布,翻译遵循 CC BY-SA 3.0 许可协议

尝试从几个地方得到你的答案,第一个获胜:

 my $username = $ENV{LOGNAME} || $ENV{USER} || getpwuid($<);

原文由 glenn jackman 发布,翻译遵循 CC BY-SA 3.0 许可协议

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题