Linux - 使用“su -”但保留当前目录

Ama*_*rus 16 linux unix su sudo

当我su -进入 root 时,我的当前目录被设置为 root 的家。无论如何要保留我所在的当前目录,就像sudo -s. 或者是使用 sudo 的答案?

crb*_*crb 19

如果可能,最好使用 sudo,因为这样您就不需要知道(或给某人)root 的密码。将 root 密码设置为长而可怕的密码,然后将其锁在保险箱中。

如果您想稍后拒绝某人访问,您只需删除他们对 sudo 的访问权限,而不必教其他人一个新的 root 密码。

但是 - 如果您不想,则不需要使用“-”参数。您将以 root 身份获得一个 shell,它不会是一个登录 shell(因此它不会运行 root 的 .profile。)


Rus*_*ing 17

我同意 sudo 几乎总是一个更好的答案,但要回答问题的另一部分...

“su -”中的“-”表示您要模拟超级用户登录,而不是仅以超级用户权限运行。

如果您使用普通的 'su' 而不是 'su -',您将停留在同一目录中;但是您也将在相同的环境中运行,因此可能需要修改您的路径以访问某些管理命令。


fre*_*eit 11

如果您su不使用-,它应该将您保留在当前目录中。 --l--login 告诉 su:

提供与用户直接登录时所期望的环境类似的环境。

或者只是使用 sudo,它还有很多其他优点。或 ssh 密钥。


Jin*_*ich 6

你绝对应该使用 sudo。

su -m
-m (-p):不重置环境变量(一般不推荐)

当您更改为 root 时,这将使您留在文件夹中。

使用 sudo 的好处


小智 6

如果你真的想使用su,有一种方法可以留在同一个目录中。

su - <user> -c "cd `pwd`; bash"
Run Code Online (Sandbox Code Playgroud)

这里发生了什么:

  • su - <user> = 登录为
  • -c 这意味着“在 new 的 shell 中运行命令
  • -c "cd `pwd`" 我们给出的命令是切换到当前目录 ( pwd) - 但是因为我们使用了反引号,所以pwd在我们运行su命令之前会评估该命令,以便我们实际切换到我们现在作为旧用户所在的目录。这里唯一的问题是新的 shell 在运行命令后立即退出,所以我们添加:
  • -c "cd `pwd`; bash" 这意味着“bash在运行cd命令后运行(新 shell),并且 bash shell 在我们注销之前不会退出。

  • 这实际上是问题的唯一答案。好工作! (3认同)