Как найти текущую учетную запись пользователя в Linux

Самый простой способ найти текущего пользователя — это открыть терминал, который покажет имя пользователя и имя хоста.

Запутался? Позвольте нам показать вам:

andreyex@destroyer:~$

где:

    • andreyex — Имя пользователя
    • destroyer — Имя сервера

Другой способ — использовать переменную среды $USER.

Но что, если вы хотите использовать эти данные в bash-скрипте? Или вы хотите найти текущего пользователя в bash-скрипте? Что ж, в этой статье такие вопросы будут рассмотрены более подробно.

Найти текущую учетную запись пользователя в Linux

В этой статье мы расскажем вам о следующих способах поиска текущей учетной записи пользователя в Linux:

    • С помощью команды who
    • С помощью команды whoami (дополнительные флаги не требуются)
    • Используя переменную окружения $USER (лучше всего подходит для bash-скрипта)

Каждое из этих пояснений к командам будет включать выполнение командной строки, а также то, как это можно использовать в скрипте bash, чтобы вы могли получить максимальную отдачу от каждого из них.

 

1. Используя команду who

Чтобы узнать текущего вошедшего в систему пользователя с помощью команды who, все, что вам нужно сделать, это выполнить команду who следующим образом:

who
andreyex   :1      2024-03-11 12:45 (:1)

Вы увидите текущего пользователя вместе с некоторой дополнительной информацией, где:

  • :1 указывает, что пользователь подключен ко второму графическому дисплею (X сеанс Windows).
  • 2024-03-11 12:45 это дата и время, когда пользователь вошел в систему.

 

Если бы вы использовали команду who только для получения имени пользователя, вам пришлось бы внести некоторые изменения.

Здесь я использовал команду awk, чтобы напечатать только имя пользователя, удалив всю остальную дополнительную информацию:

who | awk '{print $1}'
andreyex@destroyer:~$ who | awk '{print $1}'


andreyex

С помощью команды who в скрипте bash

Чтобы использовать команду who для поиска текущей учетной записи пользователя, вы можете использовать команду who с аргументом awk и присвоить его переменной, как показано здесь:

#!/bin/bash


# Получите текущую учетную запись пользователя, используя who и awk

current_user=$(who | awk '{print $1}')


echo "The current user is: $current_user"

При выполнении это выдаст вам следующий результат:

andreyex@destroyer:~$ ./who.sh


The current user is: andreyex

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

В отличие от команды who, когда вы выполняете команду whoami в Linux, она выводит только имя пользователя текущего вошедшего в систему пользователя:

whoami
andreyex@destroyer:~$ whoami


andreyex

Да, никаких дополнительных флагов не требуется! Сразу к делу.

С помощью команды whoami в скрипте bash

Если вы хотите найти текущую учетную запись пользователя с помощью команды whoami, ее можно вычислить в скрипте bash следующим образом:

#!/bin/bash


# Получите текущего пользователя, вошедшего в систему, с помощью whoami

current_user=$(whoami)


echo "The currently logged-in user is: $current_user"

Если вы решите использовать приведенный выше скрипт, ожидайте следующего вывода:

andreyex@destroyer:~$ ./who.sh


The currently logged-in user is: andreyex

3. Использование переменной среды $USER

Чтобы использовать переменную среды $USER в скрипте bash для поиска текущего пользователя, вам нужно соединить ее с командой echo, как показано на рисунке:

echo $USER
andreyex@destroyer:~$ echo $USER


andreyex

Теперь давайте посмотрим на ту часть скрипта bash, где он предназначен для использования!

Используя переменную среды $USER в скрипте bash

Если вы хотите использовать скрипт bash для поиска текущего пользователя, это может быть идеальным примером, поскольку вам не нужно присваивать его какой-либо переменной.

Конечно, вы можете добиться аналогичных результатов с помощью команд (используя $(command)), но все же мы считаем это самым простым способом.

Вот как вы можете использовать переменную среды $USER в скрипте bash:

#!/bin/bash


echo "The current user is: $USER"

Да, простая однострочная команда, и при выполнении она даст вам те же результаты, что и две предыдущие команды:

andreyex@destroyer:~$ ./USER.sh


The current user is: andreyex

Вот как управлять несколькими пользователями

Вы также можете удалять учетные записи пользователей с помощью команды userdel:

Вы также можете изменять учетные записи пользователей с помощью команды usermod:

Мы надеемся, что вы найдете это руководство полезным.