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


回答:


194

'whoami'は廃止されたので、使用するのはおそらく上位互換性があります。

id -un

2
「whoami」はどのような意味で廃止されましたか?だれがそれを時代遅れだと宣言しましたか?
ジョナサンレフラー、

2
@ジョナサン:whoamiLeopard ののmanページで、に置き換えられたことが確認されていますid
ナフ2009

ああ!なぜ彼らは、夜明け以来存在していた何かを変えているのですか?
dmckee ---元モデレーターの子猫

28
言うべきwhoami?<boom-chacka>
ケント

27

ユーザー名ではなくフルネームを表示したい場合は、-Fフラグを追加します。

$ id -F
Andrew Havens

1
-Fはマーベリックスでは違法なオプションです-これが最初に機能し始めたのはいつですか?
Eli B.

11

私は誰

編集

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


10

ここ経由

/ dev / consoleの所有者をチェックすることはうまくいくようです。

stat -f "%Su" /dev/console


1
これは、マシンにsshされていて、ユーザーがローカルにログオンしているかどうかを確認する場合に最適です。そうでない場合、コマンドは「root」を返します。
Tim Dearborn 2016年

9

OS Xのターミナルはunixと同じだと思いますので、コマンドは次のようになります。

whoami

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

注- whoamiユーティリティは廃止され、と同等id -unです。それはあなたに現在のユーザーを与えます


4

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

$ w
 15:56:14 up up 5 days、20:58、6 users、load average:0.43、0.53、0.50
ユーザーTTYログイン@ IDLE JCPU PCPU何
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はマルチユーザーシステムになるように設計されています。


4

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

あたりman logname

LOGNAME(1)

NAME
    logname -- display user's login name

1
これは間違いなく最もクリーンで簡単なソリューションです。コマンドを実行しているユーザーに関係なく機能します。
Maxime Viargues

2

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

では、現在のユーザーは誰ですか?バックグラウンドで私を残して、他の何人かのユーザーが効果的なユーザーになっていますか?やる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

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

私は一般的whoamiターミナルで使用します ...

たとえば、この場合、Tomcatサーバーをインストールするためにそれが必要でした...

ここに画像の説明を入力してください



1

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

printenv USER

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

process.env.USER


1

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

質問が「ログインしているユーザーは誰ですか」の場合、「who am i」または「whoami」で結構です(回答は異なりますが、「whoami」はユーザー名のみを報告し、「who am i」は端末とログイン時間も)。

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

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.