为什么我不能通过 cd 进入目录?

为什么我不能通过 cd 进入目录?

我正在运行 Ubuntu 10.04.2 LTS。为什么我无法cd进入/var/www目录?

david@ubuntu:/var$ pwd
/var

david@ubuntu:/var$ ls -l
drwxrwxr-- 13 root root  4096 2011-02-26 21:53 www

david@ubuntu:/var$ cd www
-bash: cd: www: Permission denied

david@ubuntu:/var$ sudo cd www
sudo: cd: command not found

答案1

您需要有执行权限才能进入目录。

sudo chmod o+x /var/www

答案2

禁止“其他人”进入目录是有原因的,不是吗?因此,我建议获取 root 权限以进入该目录,执行一些操作,然后离开,放弃 sudo shell。

sudo -i 
cd /var/www
# do your thing
cd -
exit

答案3

再补充一点,为您的系统创建一个 Web 用户和组,并且不以 root 身份运行服务是明智之举。然后,您还可以根据需要将用户添加到该组,而不授予 root 权限。

答案4

您是否正在尝试 cd 到主文件夹?
可能是您尝试通过 cd 转到包含的路径,~但由于您在其两边使用了引号,因此该路径不会被扩展。

$ cd "$root/foo"
bash: cd: ~/myfolder/foo: No such file or directory
$ cd "~"
bash: cd: ~: No such file or directory

AskUbuntu 上的一个非常好的答案 详细解释

~ 周围的任何类型的引号都会阻止这种波浪符号的扩展。

因此,您可能会尝试cd $location,但由于位置包含波浪符号,因此它不起作用。

一个好的快速解决方案是使用$HOME而不是~。虽然 即使~在双引号内也不会扩展,但是$HOME是。
因此更改:

  • declare location = "~/ExistingFolder/"
  • declare location = "$HOME/ExistingFolder/"

你应该读原始答案在 AskUbuntu 问题中为什么我不能 cd 到带引号的波浪号 (‘~’)?“。
它详细解释了正在发生的事情以及可用的选项。

相关内容