[bash] Bash에서 현재 사용자의 사용자 이름을 얻으려면 어떻게해야합니까?

Bash에서 사용자의 사용자 이름을 가져와야하는 프로그램을 작성 중입니다.

나는이라는 것을 들었지만 whoami그것이 무엇을 어떻게 사용하는지 전혀 모른다.

현재 사용자 이름을 얻기 위해 어떤 명령을 사용합니까?



답변

명령 행에 다음을 입력하십시오.

whoami

또는

echo "$USER"

이 값을 변수에 저장하려면

myvariable=$(whoami)

또는

myvariable=$USER

물론 $USER변수가 목적 이기 때문에 변수를 만들 필요가 없습니다 .


답변

의 대안은 whoami입니다 id -u -n.

id -u사용자 ID를 반환합니다 (예 : root의 경우 0 ).


답변

표준 Unix / Linux / BSD / MacOS 명령 logname을 사용하여 로그인 한 사용자를 검색하십시오. 이것은 신뢰할 수없는 기자이기 때문에 sudo뿐만 아니라 환경도 무시합니다. 항상 로그인 한 사용자 이름을 인쇄 한 다음 종료합니다. 이 명령은 약 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


답변

내가 솔라리스 9와 리눅스 에서 사용한 해킹 으로 둘 다 잘 작동합니다.

ps -o user= -p $$ | awk '{print $1}'

이 스 니펫은 현재 EUID를 가진 사용자 이름을 인쇄합니다.

노트: 여기서 통역사로 Bash가 필요합니다.

Solaris에서는 위에서 설명한 방법에 문제가 있습니다.

  • id-u-n매개 변수를 승인하지 않으므로 출력을 구문 분석해야합니다.
  • whoami 존재하지 않습니다 (기본적으로)
  • who am I 현재 터미널의 소유자를 인쇄합니다 (EUID 무시)
  • $USER변수는 프로파일 파일을 읽은 후에 만 ​​올바르게 설정됩니다 (예 /etc/profile🙂

답변

두 가지 명령 :

  1. id 그룹과 함께 사용자 ID를 인쇄합니다. 체재:uid=usernumber(username) ...

  2. whoami 현재 사용자 이름을 제공합니다


답변

스크립트를 사용할 때 일반적으로 90 % 이상인 루트 (스도) 권한이 필요한 경우 이전 답변의 방법이 항상 답변으로 제공 root됩니다.

현재 “로그인 된”사용자를 얻는 것은 간단하지만 다른 변수에 액세스해야합니다 : $SUDO_UID$SUDO_USER.

그들은 반향 될 수 있습니다 :

echo $SUDO_UID
echo $SUDO_USER

또는 예를 들어 다음과 같이 할당됩니다.

myuid=$SUDO_UID
myuname=$SUDO_USER


답변

에서 솔라리스 OS I이 명령을 사용 :

$ who am i     # Remember to use it with space.

Linux에서-누군가가 이미 의견에 답변했습니다.

$ whoami       # Without space