Alterar a propriedade da pasta não funciona!

Alterar a propriedade da pasta não funciona!

Estou tentando alterar a propriedade de uma pasta e subpastas digitando um destes:

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

Mas eu recebo a saída:

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

O que estou fazendo de errado?

Responder1

Por que letras minúsculas $usernão funcionam

Para esclarecer e expandir o que os outroster disse, as variáveis ​​de shell e de ambiente diferenciam maiúsculas de minúsculas. usere USERsão variáveis ​​diferentes, portanto seus conteúdos (que se $userexpandem $USERpara, respectivamente) podem ser diferentes. Normalmente, nenhuma variável chamada useré definida e $userexpandida para nada, enquanto o que você deseja é $USERque se expanda para o seu nome de usuário.

O echocomando geralmente é adequado para verificar o valor de uma variável:

$ echo "$user"

$ echo "$USER"
ek

Para variáveis ​​cujos valores não contêm espaços em branco, as aspas podem ser removidas sem afetar a saída.
Então eu poderia ter usado echo $USERse quisesse.

Outra opção, parachown

Você provavelmente conhece seu próprio nome de usuário, então pode usá-lo no lugar de $USER. Se você fizer isto,certifique-se de omitir o $sinal.

Por exemplo, como meu nome de usuário é ek, eu poderia usar:

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

Por que você consegueQueErro

Você deve estar se perguntando por que recebe essa mensagem de erro específica:

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

Na verdade, essa mensagem é informativa, pois quando você vê uma mensagem como essa de um comando onde expandiu variáveis, ela sugere que uma ou mais de suas variáveis ​​expandidas podem ter sido involuntariamente vazias ou não definidas.

Você executou sudo chown $user -R /usr/bin/.folder/e, como userprovavelmente estava indefinido, $userexpandiu para nada e foi equivalente a executar:

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

A -Ropção atua chownem todos os arquivos em uma árvore de diretórios, como você provavelmente sabe. Desde que $userexpandido para nada, /usr/bin/.folder/foi o primeironão opçãoargumento para chowne, portanto, foi interpretado como o argumento que especifica a propriedade desejada (como um nome de usuário). /usr/bin/.foldernão é uma sintaxe válida para isso, mas esse erro específico não foi relatado porque um erro diferente parou chownprimeiro: não havia mais argumentos e, portanto, não havia nada especificado para chownoperarsobre.

Dito de outra forma, se eu corresse sudo chown $USER -R /usr/bin/.folder/, ele se expandiria sudo chown ek -R /usr/bin/.folder/e chowninterpretaria seus argumentos desta forma:

  • ek: nome de usuário, já que nenhum argumento de nome de usuário foi passado ainda
  • -R: opção recursiva (a liderança -é o que faz chownsaber que é um argumento de opção)
  • /usr/bin/.folder/: arquivo ou diretório para alterar a propriedade, pois o nome de usuário já foi passado

Mas se eu corresse sudo chown $user -R /usr/bin/.folder, ele se expandiria sudo chown -R /usr/bin/.folder/e chowninterpretaria seus argumentos desta forma:

  • -R: opção recursiva
  • /usr/bin/.folder/: nome de usuário, já que nenhum argumento de nome de usuário foi passado ainda

Leitura adicional

Para mais informações, você pode estar interessado em:

Responder2

Por favor, use $USERem vez de $user.

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

Responder3

A uservariável provavelmente está vazia. Tentar $USER.

informação relacionada