getlogin

現在の tty のログインユーザーを取得する

構文

解説

getlogin は、現在の tty ログインユーザー名を返します。 もし現在の tty ログインユーザーが得られなければ、undef、 または、空文字列を返します。

my $user = getlogin || '[Unknown]';
print $user, "\n";

getlogin は Linux の utmp ファイルの内容から情報を取得しています。 例えば、Ubuntu なら utmp ファイルは /var/run/utmp にあります。 このファイルの内容を確認するには、who コマンドを使います。

$ who /var/run/utmp
futomi   tty2         2023-08-03 09:04 (tty2)

もし、この utmp の仕組み、または、それに相当する仕組みがない環境では、 getloginundef を返します。 たとえば、Windows 11 上で動作する WSL (Windows Subsystem for Linux) が該当します。 なお、Windows 11 の PowerShell では、utmp は存在しませんが、 getlogin は期待通りに現在のユーザー名を返します。ただし、先頭 5 文字で切り取られます。

仮にシェルにログインした状態で getlogin がうまく動作したとしても、 cron、バックグラウンド処理、CGI での動作においては、必ずしもユーザー名を取得できるとは限りません。 もし getlogin でユーザー名が得られない場合は、 getpwuid($<) を試すと良いでしょう。