当我登录时username
, 为什么
sudo ls ~
显示而不是?的内容我认为以 root 身份执行命令,在这种情况下代表./home/username
/root
sudo
~
/root
更多解释:
此外,如果我运行该su
命令,然后运行ls ~
,我会显示 的内容/root
。所以我认为这样做相当于sudo ls ~
。
作为另一个例子,一些带有标志的命令--user
在运行时会将用户解释为 root sudo
。例如,将安装到 中的目录 ,而 将安装到 中的目录。请注意,不建议运行最后一个命令,我只是用它来显示我所描述的功能。pip install --user packagename
/home/username
sudo pip install --user packagename
/root
答案1
shell~
在运行前展开sudo
;你可以通过以下方式看到它的实际效果set -x
:
$ set -x
$ sudo ls ~
+ sudo ls /home/skitt
这表明实际运行的命令已经使用扩展时的当前用户扩展了主目录。
要查看目标用户的主目录,您必须推迟波形符扩展:
sudo bash -c 'ls ~'