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

sri*_*nna 124 sudo

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

oKt*_*iTe 118

而是尝试使用sudo -s启动 root shell,然后简单地cd进入目录。
以 root 身份完成后,按CtrlD或键入exit


正如 Arjan 在下面的评论中所暗示的那样,重要的是要注意,作为 root,一个人可以很容易地损坏基本系统组件。小心使用!

  • 但是:要小心,一旦是根... (4认同)

Den*_*son 80

cd是一个内置的shell。sudo仅适用于可执行文件。你可以这样做,sudo sh -c 'cd dirname'但是一旦 shell 退出,你就会返回到你开始的目录。如果你说你想要完成什么,那么我可以帮助你找到一种方法来做到这一点。

  • 但是,`sudo pwd` 也不起作用吗?(我一直认为 `sudo cd` * 确实* 有效,但是你只是在 `sudo` 返回后看不到结果。但这只是一个疯狂的猜测。也许 `cd` 和 `pwd` 实际上都不是内置的 -在 Mac 上的 Bash 中运行。运行 `which cd` *does* 确实给了我结果。运行 `sudo cd /` 不会给我一个错误,但确实不会导致更改工作目录。) (2认同)
  • @Arjan:`pwd` 也是一个外部可执行文件,所以它可以工作。请注意,在某些系统上,有一个 `cd` 可执行文件,但它大多没用。顺便说一下,尝试使用 `type -a cd` 它比 `which` 提供更多信息。 (2认同)
  • 好的!`type -a cd` 在我的 Mac 上显示了 `cd 是内置的 shell` 和 `cd 是 /usr/bin/cd`。“pwd”和“echo”也是如此。`sudo pwd` 和 `sudo echo "Hello world"` 都给了我一个结果。然而,`type -a return` 只产生`return is a shell builtin`,而`sudo return 3` 显示我`sudo: return: command not found`。所以,我想问题是:OP 是否收到错误消息,或者 OP 是否没有看到 `cd` 工作而没有任何错误?(或者:OP 使用的是什么操作系统。) (2认同)
  • `sudo sh -c 'cd dirname'` 对我没有任何作用。 (2认同)

Ale*_*lex 14

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

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

小智 13

当我尝试导航到 Kali Linux 的根目录时,我遇到了同样的问题:

sudo su
Run Code Online (Sandbox Code Playgroud)

允许我执行:

cd /
Run Code Online (Sandbox Code Playgroud)