2013-10-07 45 views
2

我想在腳本本身內提取用戶名,執行perl腳本。從Perl腳本中提取用戶名

我正在執行whoami從perl的linux命令如下,它工作得很好。

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

我的意圖是擺脫從Perl腳本調用系統命令。因此我在尋找Perl只有的解決方案。我想知道是否有任何可以提取系統信息的CPAN模塊。

您的建議在這方面將不勝感激。

回答

6
perl -le 'print scalar getpwuid $<' 
+0

謝謝!這工作得很好! – jkshah

2

你或許應該採取在看看哈希%ENV。它包含有關腳本運行環境的有用信息。 (在Windows)

一個例子來獲取用戶名是:

perl -E "say $ENV{'USERNAME'}" 

爲任何LOGNAMEUSER bash的替代USERNAME

+0

感謝您的回覆。但是我使用的是linux env,它提供錯誤說明* ENV:未定義變量。* – jkshah

3

Perl可以直接映射到系統getpw*函數。

這些程序與系統C 庫中的對應程序相同。在列表上下文,從各個的返回值獲得 程序如下:

($名稱,$ passwd文件,$ UID,$ GID, $配額,$評論,$ GCOS,$目錄,$外殼, $ expire)= getpw *

- 從perldoc -f getpwuid

使用getpwuid$<作爲參數(其中,根據perldoc perlvar是「這個過程的實際uid」,並且也可作爲$REAL_USER_ID$UID),並會首先返回的值。

+0

+1以獲得詳細解釋。 – jkshah