Use*_*841 33 shell directory sudo
在命令行上工作时,我经常使用sudo -i. 但是,我的工作目录会自动更改为/root. 我永远不想去那里;我想呆在原地!我怎样才能做到这一点?
Lev*_*von 36
您可以改用sudo -s它,它不会将您当前的目录更改为/root,尽管您的某些环境变量不会是 root 的环境变量。
来自 Ubuntu 论坛的这个页面有一个很好的总结:
Summary of the differences found
corrupted by user's
HOME=/root uses root's PATH env vars
sudo -i Y Y[2] N
sudo -s N Y[2] Y
sudo bash N Y[2] Y
sudo su Y N[1] Y
Run Code Online (Sandbox Code Playgroud)
来自 Ubuntu 文档的这个页面有更多关于 sudo 的背景信息。
小智 14
如果要使用su,有一种方法可以留在同一目录中。
su - user -c "cd `pwd`; bash"
这里发生了什么:
su - user = 登录为 user-c 这意味着“在新用户的 shell 中运行命令”-c "cd `pwd`"我们给出的命令是切换到当前目录 ( `pwd`) - 但是因为我们使用双引号中的反引号,所以pwd在我们运行su命令之前会评估该命令,因此我们实际上切换到我们现在所在的目录作为旧目录用户。
-c 'cd `pwd`'会pwd在新的 shell 中执行命令,所以这将评估为cd /root,当然,这不会完成任何事情。这里唯一的问题是新的 shell 在运行命令后立即退出,所以我们添加:
-c "cd `pwd`; bash"这意味着“bash在运行cd命令后运行(新 shell)。bash shell 在我们注销之前不会退出。请注意,您可以替换`pwd`为$(pwd). 它们在功能上是相同的,但是大量的类似引号的字符可能变得难以阅读。