![Alterar a propriedade da pasta não funciona!](https://rvso.com/image/1083740/Alterar%20a%20propriedade%20da%20pasta%20n%C3%A3o%20funciona!.png)
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 $user
nã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. user
e USER
são variáveis diferentes, portanto seus conteúdos (que se $user
expandem $USER
para, respectivamente) podem ser diferentes. Normalmente, nenhuma variável chamada user
é definida e $user
expandida para nada, enquanto o que você deseja é $USER
que se expanda para o seu nome de usuário.
O echo
comando 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 $USER
se 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 user
provavelmente estava indefinido, $user
expandiu para nada e foi equivalente a executar:
sudo chown -R /usr/bin/.folder/
A -R
opção atua chown
em todos os arquivos em uma árvore de diretórios, como você provavelmente sabe. Desde que $user
expandido para nada, /usr/bin/.folder/
foi o primeironão opçãoargumento para chown
e, portanto, foi interpretado como o argumento que especifica a propriedade desejada (como um nome de usuário). /usr/bin/.folder
não é uma sintaxe válida para isso, mas esse erro específico não foi relatado porque um erro diferente parou chown
primeiro: não havia mais argumentos e, portanto, não havia nada especificado para chown
operarsobre.
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 chown
interpretaria 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 fazchown
saber 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 chown
interpretaria 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 $USER
em vez de $user
.
sudo chown $USER -R /usr/bin/.folder/
Responder3
A user
variável provavelmente está vazia. Tentar $USER
.