为什么 'sudo bash && cd Desktop' 不 cd 到桌面文件夹?

为什么 'sudo bash && cd Desktop' 不 cd 到桌面文件夹?

我有一个具有chmod 000权限的文件夹,里面有很多不同的东西,我进入的方式是通过bash运行.sudosudo bash

为什么我做不到&&?我想cd使用这样的一个命令进入目录:

sudo bash && cd desktop

当我运行这个时,我仍然在~默认目录中。

我必须运行这个

sudo bash
cd desktop

另外,桌面不是文件夹,它是桌面的子文件夹,但这并不重要。无论如何都是一样的。

答案1

之后的部分&&在当前 shell 中执行,它不是传递给bash您运行的某些参数sudo

您可能会想尝试

sudo bash -c 'cd desktop'

但这不起作用,因为它bash在 后退出cd desktop

你可以试试:

sudo sh -c 'cd desktop && exec bash'

desktop它“有效”(即将您置于Bash shell 中 uid=0 的目录中)。我宁愿发出两个单独的命令,也不愿发出一个命令。

答案2

它确实有效,只是不是你期望的那样。&&等待命令完成。如果此时的结果为true,则执行下一条指令。因此,如果您输入bash && cd desktop,您将首先看到一个 bash shell。如果您输入exit,您将回到之前所在的 shell 中,并且然后该目录将更改为桌面文件夹。

就我所描述的功能而言,sudo 无关紧要。您的 sudo 用例可能不是最佳实践,您应该考虑其他解决方案。

相关内容