답변:
.NET을 사용하는 경우 $ SUDO_USER가 작동하지 않습니다 sudo su -
.
또한 여러 검사를 필요로 - 경우 $USER == 'root'
다음 얻을 $SUDO_USER
.
대신에 명령의 whoami
사용 who am i
. who
현재 세션에 대해 필터링 된 명령 이 실행됩니다 . 필요한 것보다 더 많은 정보를 제공합니다. 따라서 사용자 만 얻으려면 다음을 수행하십시오.
who am i | awk '{print $1}'
또는 더 간단하게 사용할 수 있습니다 logname
. 위의 문장과 같은 일을합니다.
세션에 로그인 한 사용자 이름을 제공합니다.
이는 sudo
또는에 관계없이 작동 sudo su [whatever]
합니다. 또한 횟수에 관계없이 작동 su
및 sudo
이라고합니다.
who am i
입니다 who mom likes
. 당신의 선택.
who
두 줄 모두 내 이름을 포함하고 who am i
아무것도 반환하지 않습니다. 도움이 필요하세요?
who am i
은 아무것도하지 않는다. 간단하게 보인다 who
. 그래서 who | awk '{print $1}'
예상대로 작동한다;)
awk
설치, 당신은 또한 사용할 수 있습니다 cut
: who mom likes | cut -d' ' -f1
또는 sed
몇 가지 이유 : who mom likes | sed -n 's/^\([^ ]*\).*/\1/p'
$ SUDO_USER 가 유효 하다고 생각 합니다.
#!/bin/bash
echo $SUDO_USER
whoami
sudo env
쇼 SUDO_USER
그러나 sudo echo $SUDO_USER
인쇄 아무것도 ...
sudo echo $SUDO_USER
bash는 sudo 를 실행 하기 전에 $ SUDO_USER 를 평가 합니다. 이 솔루션에 게시 된 스크립트를 사용해보십시오.
$SUDO_USER
작동하지 sudo su -
않지만 logname
항상 작동합니다.
sudo 여부에 관계없이 스크립트를 호출 한 사람의 사용자 이름을 얻는 방법은 다음과 같습니다.
if [ $SUDO_USER ]; then user=$SUDO_USER; else user=`whoami`; fi
또는 더 짧은 버전
[ $SUDO_USER ] && user=$SUDO_USER || user=`whoami`
user=${SUDO_USER:-$(whoami)}
또는user=$(logname)
who am i | awk '{print $1}'
나를 위해 일하지 않았지만 일을
who|awk '{print $1}'
할 것입니다
이상하게도 시스템은 실제 UID와 효과적인 UID를 구분 하지만 쉘 수준에서이를 내보내는 프로그램을 찾을 수 없습니다.
who am i
이 여기에 대한 답입니다.