如何切换到root用户但留在同一目录

Ham*_*san 14 command-line root sudo

我最近切换到 Ubuntu,当我使用以下命令切换到 root 用户时,我观察到了一件事

sudo su - root
Run Code Online (Sandbox Code Playgroud)

它把我直接带到 root 的家 ( /root),所以我失去了我在文件系统中的位置(我执行这个命令的目录)。有没有办法在不丢失当前目录的情况下切换到root?

ter*_*don 19

首先,不要使用sudo su. 这没有错,也没有危险或任何东西,只是不雅和毫无意义。您正在运行两个单独的程序来完成一个可以轻松处理的工作。如果你想以 root 身份启动一个 shell,sudo可以为你做。

如果您想启动登录 shell(这就是sudo su -),请使用sudo -i. 但是,由于它启动了登录 shell,默认情况下会将您带到 root 的主目录。

要启动常规的非登录 shell,您可以使用sudo -s. 这将为您启动一个 root shell,并将您保留在运行它的目录中:

terdon@tpad ~ $ pwd
/home/terdon
terdon@tpad ~ $ sudo -i  ## changes directory
[root@tpad ~]# pwd
/root
[root@tpad ~]# logout
terdon@tpad ~ $ sudo -s  ## doesn't change directory
[root@tpad terdon]# pwd
/home/terdon
Run Code Online (Sandbox Code Playgroud)

因此,启动 root shell 并停留在同一目录中的方法是sudo -s.


小智 8

这很简单。只需输入

sudo su
Run Code Online (Sandbox Code Playgroud)

代替

sudo su - root
Run Code Online (Sandbox Code Playgroud)

这将使您与 root 保持在同一文件夹中。

  • 这没有错,我的意思是它确实有效,但是使用 `sudo su` 没有多大意义。这就是 `sudo -s` 的用途。我一直不明白为什么这么多 Ubuntu 教程都建议使用 `sudo su`。 (9认同)