我有一个脚本,需要知道它运行的用户名.
当我从shell运行它时,我可以很容易地使用由$ bash提供的$ ENV {"USER"}.
但显然 - 然后相同的脚本从cron运行,也通过bash运行 - $ ENV {"USER"}未定义.
当然,我可以:
my $username = getpwuid( $< );
Run Code Online (Sandbox Code Playgroud)
但它看起来不太好 - 有没有更好/更好的方式?它不必独立于系统,因为该脚本仅供我个人使用,并且只能在Linux上运行.
gle*_*man 50
尝试从几个地方获得答案,首先获胜:
my $username = $ENV{LOGNAME} || $ENV{USER} || getpwuid($<);
Run Code Online (Sandbox Code Playgroud)
crontab设置,$LOGNAME以便您可以使用$ENV{"LOGNAME"}.$LOGNAME默认情况下也在我的环境中设置(虽然没有看到它设置的位置)所以你可能只能使用$LOGNAME而不是$USER.
虽然我同意黑客,但不知道有什么不对getpwuid.
这看起来更漂亮吗?
use English qw( ?no_match_vars );
my $username = getpwuid $UID;
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
46234 次 |
| 最近记录: |