web-dev-qa-db-ja.com

OS Xのコマンドラインからアクティブユーザーの名前を取得するにはどうすればよいですか?

OS Xのコマンドラインからアクティブユーザーの名前を取得するにはどうすればよいですか?

55

「whoami」は廃止されているため、使用するのにおそらく上位互換性があります。

id -un
132
kent

(ユーザー名ではなく)フルネームを表示する場合は、-Fフラグ:

$ id -F
Andrew Havens
24
Andrew

whoami

[〜#〜] edit [〜#〜]

Whoamiユーティリティはid(1)ユーティリティによって廃止され、id -unと同等です。コマンドid -pは、通常のインタラクティブな使用に推奨されます。

8
dfa

こちら 経由

/ dev/consoleの所有者の確認はうまくいくようです。

stat -f "%Su" /dev/console

7

OS Xのターミナルはunixに似ているので、コマンドは次のようになります。

whoami

現時点ではMacを使用していないので、間違っている場合は誰かが修正してくれます。

6
Eric Koslow

現在システムにログインしているユーザーを知りたい場合:

 $  w  
 15:56:14まで5日間、20:58、6ユーザー、負荷平均:0.43、0.53、0.50 
 USER TTY LOGIN @ IDLE JCPU PCPU WHAT 
 me pts/2 Fri19 1:03m 0.98s 0.98s-/ bin/bash 
 me pts/3 09:55 6:00m 0.43s 0.43s/bin/bash 
 me pts/5 15:56 0.00s 0.23s 0.00sw 

(これはLinuxシステムのものです。OSXのフォーマットは若干異なる場合がありますが、情報はほぼ同じである必要があります。)

複数のログインセッションがある場合があります。結局のところ、UNIXはマルチユーザーシステムとして設計されています。

3
ephemient

MAC端末でユーザー名を取得するのは簡単です...

私は通常terminalwhoamiを使用します...

たとえば、この場合、インストールする必要がありましたTomcat Server...

enter image description here

2
Alireza

LinuxまたはMacOSのBSD General Commands Manualのlognameコマンドを使用して、ユーザーがSudo操作を実行している場合でも、現在ログインしているユーザーのユーザー名を確認することもできます。これは、たとえば、Sudoを使用してシステム全体のパッケージをインストールしているときにユーザーのcrontabを変更する場合に便利です:crontab -u $(logname)

man logname

LOGNAME(1)

NAME
    logname -- display user's login name
2
Adam Link

質問は完全に答えられていません、私見。説明しようと思います:bashシェルコマンドプロシージャをスケジュールするcrontabエントリがあり、それがファイルのクリーンアップを行います。そして、完了したら、OS X通知センターを使用して(コマンド[osascript -e 'display notification ...)で)to meを送信します。誰か(私の妻や娘など)がコンピューターの現在のユーザーを彼女に切り替えて、私をバックグラウンドのままにした場合、通知の送信時にcronスクリプトfailsが送信されます。

つまり、現在のユーザーは誰ですかは、他の人がバックグラウンドにいる効果的なユーザーになっているを意味しますか? stat -f "%Su" /dev/consoleは現在のアクティブなユーザー名前を返しますか?

答えはイエスです。そのため、crontabシェルスクリプトが次のように変更されました。

...
if [ "$(/usr/bin/stat -f ""%Su"" /dev/console)" = "loreti" ]
then /usr/bin/osascript -e \
  'display notification "Cleanup done" sound name "sosumi" with title "myCleanup"'
fi
2
Maurizio Loreti

「アクティブユーザー」を定義します。

「ログインしているユーザーは誰ですか」という質問の場合、「who am i」または「whoami」で問題ありません(ただし、「whoami」はユーザー名のみを報告し、「who am i」は端末で報告し、ログイン時間も)。

質問が「どのユーザーIDがシェルの有効なIDであるか」である場合、多くの場合、「id」を使用する方が適切です。これは、実際の有効なユーザーIDとグループID、および補足グループIDについても報告します。これは、シェルがSUIDまたはSGIDを実行している場合に問題になる場合があります。

1

環境変数から取得することもできますが、それはおそらく安全ではないので、Andrewの答えに行きます。

printenv USER

Nodeなどのアプリから取得する必要がある場合は、次のような環境変数から取得する方が簡単です。

process.env.USER

0