10 ответов:
в командной строке введите
echo $USERили
whoamiчтобы сохранить эти значения в переменную, сделать
myvariable=$(whoami)или
myvariable=$USERконечно, вам не нужно делать переменную, так как это то, что
$USERпеременная для.
хак, который я использовал на Solaris 9 и Linux и который отлично работает для них обоих:
ps -o user= -p $$ | awk '{print }'этот фрагмент выводит имя пользователя с текущим EUID.
Примечание: вам нужен баш в качестве переводчика здесь.
на Solaris у вас есть проблемы с методами, описанными выше:
idне принимаются-uи-nпараметры (так что вам придется парсить вывод)whoamiне существует (by по умолчанию)who am Iвыводит владельца текущего терминала (игнорирует EUID)$USERпеременная устанавливается правильно только после чтения файлов профиля (например/etc/profile)
две команды:
idпечать идентификатор пользователя вместе с группами. Формат:uid=usernumber(username) ...
whoamiдает текущее имя пользователя
используйте стандартную команду Unix / Linux/BSD / MacOS
lognameдля получения зарегистрированного пользователя. Это игнорирует окружающую среду, а также судо, поскольку это ненадежные репортеры. Он всегда будет печатать имя пользователя, вошедшего в систему, а затем выйти. Эта команда существует примерно с 1981 года.My-Mac:~ devin$ logname devin My-Mac:~ devin$ sudo logname Password: devin My-Mac:~ devin$ sudo su - My-Mac:~ root# logname devin My-Mac:~ root# echo $USER root
когда требуются разрешения root (sudo), которые обычно составляют 90%+ при использовании скриптов, вышеуказанные методы всегда дают вам
rootответ.чтобы получить текущий "вошедший" пользователь так же просто, но требует доступа к различным переменным:
$SUDO_UIDи$SUDO_USER.им можно вторить:
echo $SUDO_UID echo $SUDO_USERили назначенные, например:
myuid=$SUDO_UID myuname=$SUDO_USER
на
bash/ksh/shetc. На многие Ваши вопросы быстро отвечают либо:man [function]чтобы получить документацию для используемой системы.
или обычно более удобно: функции гугле "человек " Это может дать разные результаты для некоторых вещей, где linux и unix имеют скромные различия.
по этому вопросу, просто введите "whoami" в вашей оболочке.
в скрипт:
myvar=$(whoami)
в Solaris OS-я использовал эту команду.
$ who am i # remember to use it with space.на Linux - кто-то уже ответил на это в комментарии.
$ whoami # without space
в большинстве систем Linux, просто набрав whoami в командной строке предоставляет идентификатор пользователя.
однако в Solaris вам может потребоваться определить идентификатор пользователя, определив UID пользователя, вошедшего в систему с помощью команды ниже.
echo $UIDпосле того, как жидкость известно, найти пользователя путем сопоставления жидкость против файле /etc/passwd и.
cat /etc/passwd | cut -d":" -f1,3
получить user_struct текущей задачи
#define get_current_user() \ ({ \ struct user_struct *__u; \ const struct cred *__cred; \ __cred = current_cred(); \ __u = get_uid(__cred->user); \ __u; \ })
Comments