
sudo를 사용하여 실행해야 하는 bash 스크립트를 만들고 싶지만 이를 실행하는 sudo가 아닌 사용자의 이름을 고려해야 합니다. 그래서 사용자가 bob
실행 하면 누가 실행했는지 알고 sudo ./myscript.sh
싶습니다 .myscript.sh
bob
내부를 살펴보겠습니다 myscript.sh
.
USER=$(whoami)
# Do something that takes into account the username.
프로세스를 생성한 사용자의 이름을 어떻게 알 수 있나요? 좀 더 구체적으로, whoami
get bob
과 not 대신 무엇을 사용해야 합니까 root
?
답변1
표준이 얼마나 되는지 잘 모르겠지만 적어도 Ubuntu 시스템에서는 sudo
다음과 같은 환경 변수가 설정되어 있습니다(다른 환경 변수 중에서 - ENVIRONMENT
매뉴얼 페이지의 sudo 섹션 참조).
SUDO_UID Set to the user ID of the user who invoked sudo
SUDO_USER Set to the login of the user who invoked sudo
예를 들어,
steeldriver@lap-t61p:~$ sudo sh -c 'whoami'
root
steeldriver@lap-t61p:~$ sudo sh -c 'echo $SUDO_USER'
steeldriver
답변2
sudo
없이 작동하려면 다음을 사용하십시오 ${SUDO_USER:-$USER}
.
printf '%s\n' "${SUDO_USER:-$USER}"
${var:-val}
설정되지 않거나 비어 있지 않는 한 으로 확장됩니다 $var
. 이 경우 로 확장됩니다 val
.