我想知道如何在一个命令中切换到另一个用户(就我而言通常是root
)并且仍然停留在同一个位置改变之前我在哪里。
我通常这样做,不幸的是采取了很多步骤:
user1@m:~/loc1/loc2$ pwd
/home/user1/loc1/loc2
user1@m:~/loc1/loc2$ su -
Password:
root@m:~# cd /home/user1/loc1/loc2
root@m:/home/user1/loc1/loc2#
我正在寻找类似的东西:
user1@m:~/loc1/loc2$ su - && ...
或类似的,这会给我这个结果:
root@m:/home/user1/loc1/loc2#
答案1
根据手册,-
和-l
都是相同的选项。
-l
模拟完整登录。除 HOME、SHELL、PATH、TERM 和 USER 之外的环境均被丢弃。 HOME和SHELL修改如上。 USER 设置为目标登录名。 PATH 设置为“/bin:/usr/bin”。 TERM 是从您当前的环境导入的。调用的 shell 是目标登录名的,su 会将目录更改为目标登录名的主目录。
-
(无字母)与 相同-l
。
如果不指定-l
或-
,则不会更改目录。
答案2
最简单的解决方案:
user1@m:~/loc1/loc2$ su root
甚至(感谢@Christopher):
user1@m:~/loc1/loc2$ su