내가 로그인할 때username
, 왜
sudo ls ~
대신에 무엇이 표시됩니까? 명령이 루트로 실행되고 있다고 가정합니다. 이 경우 루트는 를 나타냅니다./home/username
/root
sudo
~
/root
추가 설명:
또한 해당 명령을 실행 su
한 다음 실행 하면 ls ~
표시되는 내용을 얻게 됩니다 /root
. 그래서 나는 이것을 하는 것이 sudo ls ~
.
또 다른 예로, 플래그가 있는 일부 명령은 --user
실행 시 사용자를 루트로 해석합니다 sudo
. 예를 들어 는 의 디렉터리에 설치하고 는 의 디렉터리에 설치합니다. 마지막 명령을 실행하는 것은 권장되지 않습니다. 저는 단지 설명했던 기능을 표시하기 위해 이 명령을 사용했습니다.pip install --user packagename
/home/username
sudo pip install --user packagename
/root
답변1
~
실행하기 전에 쉘이 확장됩니다 sudo
. 다음을 사용하여 이를 확인할 수 있습니다 set -x
.
$ set -x
$ sudo ls ~
+ sudo ls /home/skitt
이는 실제로 실행된 명령이 확장 시 현재 사용자를 사용하여 홈 디렉터리를 확장했음을 나타냅니다.
대상 사용자의 홈 디렉터리를 보려면 다음을 연기해야 합니다.물결표 확장:
sudo bash -c 'ls ~'