为什么输入sudo cd不会改变目录?

评论

参见askubuntu.com/questions/291666/…

#1 楼

cd是内置的shell。 sudo仅适用于可执行文件。您可以执行sudo sh -c 'cd dirname',但是一旦退出shell,您将返回到您从其开始的目录。如果您说自己想完成的任务,那么我可以帮助您找到一种方法。

评论


但是,那么sudo pwd也不起作用吗? (我一直认为sudo cd确实可以工作,但是在sudo返回后您只是看不到结果。但这只是一个疯狂的猜测。也许cd和pwd实际上都不是Mac上的Bash内置的。运行哪个cd确实确实给了我结果。运行sudo cd /不会给我一个错误,但实际上不会导致工作目录更改。)

– Arjan
2011年2月3日在9:00

@Arjan:pwd也是一个外部可执行文件,因此可以正常工作。请注意,在某些系统上,有一个cd可执行文件,但是它几乎没有用。尝试使用-a cd类型,顺便说一句,它比提供的信息更多。

–丹尼斯·威廉姆森
2011年2月3日,9:06

真好!类型-a cd显示cd是Mac上的内置shell,而cd是/​​ usr / bin / cd。对于pwd和echo同样如此。 sudo pwd和sudo echo“ Hello world”确实给了我一个结果。但是,类型-a return仅产生return是一个内置的shell,而sudo return 3向我显示了sudo:return:命令未找到。因此,我想问题是:OP是否收到错误消息,或者OP没有看到CD且没有任何错误? (或者:OP使用什么操作系统。)

– Arjan
2011-2-3在9:12



sudo sh -c'cd dirname'对我没有任何帮助。

– Peter Niederwieser
2011年8月9日14:43



@Arjan我找到了解释:这有点像深度兼容性破解。它不执行其功能,但是它具有真正的cd的副作用。而且,当当前的外壳没有cd命令时,它什么也不会失败。人类可能使用过的任何外壳都有cd,包括/ bin / sh。但是,从操作系统内核看,一个程序比这要简单得多,甚至只有几行代码。请参阅cd external命令的作用是什么?

– Volker Siegel
19-10-21在10:35



#2 楼

而是尝试使用sudo -s启动根shell,然后简单地将cd进入目录。在下面的评论中,需要特别注意的是,作为根用户,很容易损坏基本的系统组件。小心使用!

评论


但是:要小心,一旦扎根...

– Arjan
2011年2月3日,9:14

#3 楼

您可以简单地将su设置为root,然后随意设置cd ...我知道答案已经被接受,但是如果一个不在sudoers列表中,那么这是唯一的选择。

评论


另一方面,如果没有root密码,或者您不知道,则sudo是唯一的选择。

–利亚姆
2015年10月20日在18:37

如果您在sudoers组中,则sudo su应该可以工作。

–周克敏
1月10日6:06



#4 楼

取决于您的操作系统,它有两种“不起作用”的方法: ”(通常位于sudo cd)以root用户身份在派生进程中执行。该过程成功更改目录。完成该过程后,您将返回到常规外壳程序,该外壳程序仍位于该程序所在的目录中。 shell。

(参考:此答案)


否则,运行/usr/bin/cd将导致发生以下情况。您的计算机将浏览您的PATH,尝试查找名为“ cd”的可执行文件。它不会找到一个。 (仅存在shell内置命令“ cd”,而不是可执行文件)。因此,您会得到一个错误。 (在Ubuntu上,我收到错误消息sudo cd。)

sudo cd运行时出错。



#5 楼

您通常可以在输入“ sudo sh”和cd到任何地方时切换到root用户

#6 楼

尝试导航到Kali Linux中的根目录时遇到了相同的问题,并且:
sudo su

允许我执行:
cd /