为什么“sudo cd”不起作用?

为什么“sudo cd”不起作用?

为什么要打字sudo cd 无论如何不会改变目录吗?

答案1

cd是 shell 的内置命令。sudo仅适用于可执行文件。您可以这样做sudo sh -c 'cd dirname',但一旦 shell 退出,您就会返回到您开始的目录。如果您说出您要完成的任务,那么我可以帮您找到实现该任务的方法。

答案2

尝试使用sudo -s来启动 root shell,然后直接cd进入目录。
以 root 身份完成后,按CtrlD或键入exit


正如 Arjan 在下面的评论中暗示的那样,值得注意的是,作为 root,人们很容易损坏重要的系统组件。小心使用!

答案3

您可以简单地su成为 root,然后cd做您想要的一切...我知道答案已经被接受,但如果答案不在 sudoers 列表中,那么这是唯一的选择。

答案4

根据您的操作系统,有两种情况会导致它“不起作用”:

  1. 如果你的操作系统遵循 POSIX,那么运行sudo cd将导致外部命令“cd”(通常位于/usr/bin/cd)以 root 用户身份在分叉进程中执行。该进程成功更改目录。该进程完成后,您将返回到常规 shell,该 shell 仍位于其启动的目录中。

    因此sudo cd运行时不会出现错误,但不会改变当前 shell 的当前工作目录。

    (参考:这个答案

  2. 否则,运行sudo cd将导致以下情况发生。您的计算机将查看您的 PATH,尝试查找名为“cd”的可执行文件。但它找不到。(只有shell 内置命令“cd” 存在,并且它不是可执行文件)。因此,您会收到错误。(在 Ubuntu 上,我收到错误消息sudo: cd: command not found。)

    所以sudo cd运行会出现错误。

相关内容