How do I get the name of the active user via the command line in OS X?

MacosCommand Line

Macos Problem Overview


How do I get the name of the active user via the command line in OS X?

Macos Solutions


Solution 1 - Macos

as 'whoami' has been obsoleted, it's probably more forward compatible to use:

id -un

Solution 2 - Macos

If you'd like to display the full name (instead of the username), add the -F flag:

$ id -F
Andrew Havens

Solution 3 - Macos

I'm pretty sure the terminal in OS X is just like unix, so the command would be:

whoami

I don't have a mac on me at the moment so someone correct me if I'm wrong.

NOTE - The whoami utility has been obsoleted, and is equivalent to id -un. It will give you the current user

Solution 4 - Macos

whoami

EDIT

The whoami utility has been obsoleted by the id(1) utility, and is equivalent to id -un. The command id -p is suggested for normal interactive use.

Solution 5 - Macos

Via here

Checking the owner of /dev/console seems to work well.

stat -f "%Su" /dev/console

Solution 6 - Macos

You can also use the logname command from the BSD General Commands Manual under Linux or MacOS to see the username of the user currently logged in, even if the user is performing a sudo operation. This is useful, for instance, when modifying a user's crontab while installing a system-wide package with sudo: crontab -u $(logname)

Per man logname:

LOGNAME(1)

NAME
    logname -- display user's login name

Solution 7 - Macos

If you want to know who's currently logged in to the system:

$ http://developer.apple.com/documentation/Darwin/Reference/ManPages/man1/w.1.html">w</a>
15:56:14 up 5 days, 20:58,  6 users,  load average: 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.00s w

(This is from a Linux system; the formatting on OS X may be slightly different, but the information should be about the same.)

There may be multiple login sessions; UNIX is designed to be a multi-user system, after all.

Solution 8 - Macos

There are two ways-

whoami

or

echo $USER

Solution 9 - Macos

The question has not been completely answered, IMHO. I will try to explain: I have a crontab entry that schedules a bash shell command procedure, that in turn does some cleanup of my files; and, when done, sends a notification to me using the OS X notification center (with the command osascript -e 'display notification ...). If someone (e.g. my wife or my daughter) switches the current user of the computer to her, leaving me in the background, the cron script fails when sending the notification.

So, Who is the current user means Has some other people become the effective user leaving me in the background? Do stat -f "%Su" /dev/console returns the current active user name?

The answer is yes; so, now my crontab shell script has been modified in the following way:

...
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

Solution 10 - Macos

getting username in MAC terminal is easy...

I generally use whoami in terminal...

For example, in this case, I needed that to install Tomcat Server...

enter image description here

Solution 11 - Macos

Define 'active user'.

If the question is 'who is the logged in user', then 'who am i' or 'whoami' is fine (though they give different answers - 'whoami' reports just a user name; 'who am i' reports on terminal and login time too).

If the question is 'which user ID is the effective ID for the shell', then it is often better to use 'id'. This reports on the real and effective user ID and group ID, and on the supplementary group IDs too. This might matter if the shell is running SUID or SGID.

Solution 12 - Macos

You can also retrieve it from the environment variables, but that is probably not secure, so I would go with Andrew's answer.

printenv USER

If you need to retrieve it from an app, like Node, it's easier to get it from the environment variables, such as

process.env.USER.

Attributions

All content for this solution is sourced from the original question on Stackoverflow.

The content on this page is licensed under the Attribution-ShareAlike 4.0 International (CC BY-SA 4.0) license.

Content TypeOriginal AuthorOriginal Content on Stackoverflow
QuestionLawrence JohnstonView Question on Stackoverflow
Solution 1 - MacoskentView Answer on Stackoverflow
Solution 2 - MacosAndrewView Answer on Stackoverflow
Solution 3 - MacosEric KoslowView Answer on Stackoverflow
Solution 4 - MacosdfaView Answer on Stackoverflow
Solution 5 - MacosLawrence JohnstonView Answer on Stackoverflow
Solution 6 - MacosAdam LinkView Answer on Stackoverflow
Solution 7 - MacosephemientView Answer on Stackoverflow
Solution 8 - MacosimpalairisView Answer on Stackoverflow
Solution 9 - MacosMaurizio LoretiView Answer on Stackoverflow
Solution 10 - MacosAlirezaView Answer on Stackoverflow
Solution 11 - MacosJonathan LefflerView Answer on Stackoverflow
Solution 12 - MacosWhat Would Be CoolView Answer on Stackoverflow