linux система

whoami

Вывести имя текущего пользователя

← Урок 02: Первые команды — урок где команда введена

Описание

whoami (от who am I? — «кто я?») — утилита из пакета GNU coreutils, выводящая эффективное имя текущего пользователя. Команда считывает эффективный UID (идентификатор пользователя) текущего процесса и ищет соответствующую запись в /etc/passwd.

whoami незаменима, когда нужно быстро проверить, от чьего имени выполняются команды — особенно при переключении между пользователями командой su или sudo su. Наиболее часто используется в скриптах для проверки запуска от имени root.

Команда практически не имеет флагов — её задача единственная: вывести имя текущего пользователя одной строкой в стандартный вывод. Для расширенной информации о пользователе используется команда id.

Синтаксис

whoami [ОПЦИИ]

Компоненты команды:

# Просто вызвать команду whoami # Вывод: user (или root) # Использование в подстановке команды echo "Текущий пользователь: $(whoami)"

Флаги и опции

whoami практически не имеет флагов — это намеренное ограничение: у неё одна задача. Доступны только вспомогательные флаги GNU:

Флаг Описание
--help Показать справку и выйти
--version Показать версию утилиты (из пакета coreutils) и выйти
Нужна расширенная информация?
Для получения UID, GID, всех групп и SELinux-контекста используйте команду id: id (без аргументов) — то же, что whoami, но с полными данными. id -un — точный аналог whoami.

Паттерны использования

Кто я сейчас?

Быстрая проверка текущего пользователя в терминале.

whoami
# user

# После sudo su:
sudo su
whoami
# root

Сравнение с id -un

whoami и id -un дают одинаковый результат. Но id — мощнее.

whoami
# user

id -un
# user

id
# uid=1000(user) gid=1000(user) groups=1000(user),27(sudo)

Проверка root в скриптах

Распространённый паттерн — убедиться, что скрипт запущен с нужными правами.

if [ "$(whoami)" = "root" ]; then
  echo "Запущен от root — продолжаем"
else
  echo "Нужны права root. Используйте sudo."
  exit 1
fi

Использование в подстановке команды

Результат whoami часто используется в строках и путях.

# Путь к домашней директории текущего пользователя
echo "/home/$(whoami)"

# Лог-файл с именем пользователя
LOGFILE="/tmp/script-$(whoami).log"
echo "Запуск" >> $LOGFILE

Советы и предупреждения

whoami vs who am i vs $USER — три разных ответа
  • whoami — выводит эффективное имя: то, от чьего имени выполняются команды прямо сейчас. После sudo su вернёт root.
  • who am i (или logname) — выводит реальное имя: того, кто изначально вошёл в систему. После sudo su всё равно вернёт исходного пользователя.
  • $USER — переменная окружения. Может быть переопределена вручную; менее надёжна в скриптах, чем whoami.
whoami в sudo-контексте
Если запустить sudo whoami — вернёт root, потому что команда выполняется с правами root. Если запустить sudo bash, а затем whoami внутри — тоже root. Именно поэтому проверка [ "$(whoami)" = "root" ] надёжно работает в скриптах.