更改文件夹所有权无效!

更改文件夹所有权无效!

我正在尝试通过键入以下内容之一来更改文件夹和子文件夹的所有权:

sudo chown $user -R /usr/bin/.folder/
sudo chown $user -R /usr/bin/folder/
sudo chown $user -R /usr/bin/.folder
sudo chown $user -R /usr/bin/folder

但我得到的输出是:

chown: missing operand after '/usr/bin/.folder/'

我究竟做错了什么?

答案1

为什么小写$user不起作用

澄清和扩展其他人的观点 ,shell 和环境变量区分大小写。userUSER是不同的变量,因此它们的内容(分别$user扩展$USER为和)可能不同。通常,没有定义任何变量user,并且$user扩展为空,而您想要的是$USER扩展为您的用户名。

echo命令通常适合检查变量的值:

$ echo "$user"

$ echo "$USER"
ek

对于值不包含空格的变量,可以删除引号而不会影响输出。所以如果我愿意,
我可以使用。echo $USER

另一种选择是chown

您可能知道自己的用户名,因此您可以直接使用它来代替$USER。如果您这样做,确保省略$符号

例如,由于我的用户名是ek,我可以使用:

sudo chown ek -R /usr/bin/.folder/

为什么你会得到错误

您可能想知道为什么会收到特定的错误消息:

chown: missing operand after '/usr/bin/.folder/'

该消息实际上是有用的,因为当您从扩展变量的命令中看到这样的消息时,它表明一个或多个扩展变量可能无意中为空或未设置。

您运行了sudo chown $user -R /usr/bin/.folder/,由于user可能未定义,因此$user扩展为无,这相当于运行:

sudo chown -R /usr/bin/.folder/

您可能知道,该-R选项会对chown目录树中的每个文件执行操作。由于$user扩展到无,/usr/bin/.folder/因此是第一个非选择权参数chown,因此被解释为指定所需所有权(例如用户名)的参数。/usr/bin/.folder这不是有效的语法,但该特定错误未被报告,因为另一个错误chown首先停止:没有更多参数,因此没有指定要chown操作的内容

换句话说,如果我运行sudo chown $USER -R /usr/bin/.folder/,它将扩展为sudo chown ek -R /usr/bin/.folder/并按chown以下方式解释其参数:

  • ek:用户名,因为尚未传递用户名参数
  • -R:递归选项(前导-部分使人chown知道这是一个选项参数)
  • /usr/bin/.folder/:由于用户名已传递,因此要更改所有权的文件或目录

但如果我运行sudo chown $user -R /usr/bin/.folder,它将扩展为sudo chown -R /usr/bin/.folder/chown以这种方式解释其参数:

  • -R:递归选项
  • /usr/bin/.folder/:用户名,因为尚未传递用户名参数

进一步阅读

欲了解更多信息,您可能感兴趣:

答案2

请使用$USER而不是$user

sudo chown $USER -R /usr/bin/.folder/

答案3

变量user可能为空。请尝试$USER

相关内容