whoami
Вывести имя текущего пользователя
← Урок 02: Первые команды — урок где команда введена
Описание
whoami (от who am I? — «кто я?») — утилита из пакета GNU coreutils,
выводящая эффективное имя текущего пользователя. Команда считывает эффективный UID (идентификатор
пользователя) текущего процесса и ищет соответствующую запись в /etc/passwd.
whoami незаменима, когда нужно быстро проверить, от чьего имени выполняются команды —
особенно при переключении между пользователями командой su или sudo su.
Наиболее часто используется в скриптах для проверки запуска от имени root.
Команда практически не имеет флагов — её задача единственная: вывести имя текущего пользователя одной
строкой в стандартный вывод. Для расширенной информации о пользователе используется команда
id.
Синтаксис
Компоненты команды:
- whoami — сама команда, выводит имя текущего пользователя.
- [ОПЦИИ] — команда почти не имеет рабочих флагов; доступны только
--helpи--version.
Флаги и опции
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— выводит эффективное имя: то, от чьего имени выполняются команды прямо сейчас. Послеsudo suвернётroot.who am i(илиlogname) — выводит реальное имя: того, кто изначально вошёл в систему. Послеsudo suвсё равно вернёт исходного пользователя.$USER— переменная окружения. Может быть переопределена вручную; менее надёжна в скриптах, чемwhoami.
Если запустить
sudo whoami — вернёт root, потому что команда выполняется
с правами root. Если запустить sudo bash, а затем whoami внутри — тоже root.
Именно поэтому проверка [ "$(whoami)" = "root" ] надёжно работает в скриптах.