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)
. 它们在功能上是相同的,但是大量的类似引号的字符可能变得难以阅读。
归档时间: |
|
查看次数: |
21274 次 |
最近记录: |