¡Cambiar la propiedad de la carpeta no funciona!

¡Cambiar la propiedad de la carpeta no funciona!

Estoy intentando cambiar la propiedad de una carpeta y subcarpetas escribiendo cualquiera de estos:

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

Pero obtengo el resultado:

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

¿Qué estoy haciendo mal?

Respuesta1

Por qué las minúsculas $userno funcionan

Para aclarar y ampliar lo que otrostener dicho, las variables de shell y de entorno distinguen entre mayúsculas y minúsculas. usery USERson variables diferentes, por lo que sus contenidos (a los que $usery $USERexpandirse, respectivamente) pueden ser diferentes. Por lo general, no userse define ninguna variable llamada y $userse expande a nada, mientras que lo que desea es $USERcuál se expandiría a su nombre de usuario.

El echocomando suele ser adecuado para comprobar el valor de una variable:

$ echo "$user"

$ echo "$USER"
ek

Para las variables cuyos valores no contienen espacios en blanco, las comillas se pueden eliminar sin afectar la salida.
Entonces podría haberlo usado echo $USERsi hubiera querido.

Otra opción, parachown

Probablemente conozcas tu propio nombre de usuario, así que puedes usarlo en lugar de $USER. Si haces esto,asegúrese de omitir el $signo.

Por ejemplo, como mi nombre de usuario es ek, podría usar:

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

¿Por qué obtienesEsoError

Quizás se pregunte por qué recibe ese mensaje de error en particular:

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

En realidad, ese mensaje es informativo, ya que cuando ve un mensaje como ese de un comando en el que expandió variables, sugiere que una o más de sus variables expandidas pueden haber estado vacías o sin configurar involuntariamente.

Ejecutó sudo chown $user -R /usr/bin/.folder/y, como userprobablemente no estaba definido, $userse expandió a nada y fue equivalente a ejecutar:

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

La -Ropción actúa chownsobre cada archivo en un árbol de directorios, como probablemente sepa. Desde que $userse expandió a nada, /usr/bin/.folder/fue el primerono opciónargumento para chowny, por lo tanto, se interpretó como el argumento que especifica la propiedad deseada (como un nombre de usuario). /usr/bin/.folderno es una sintaxis válida para eso, pero ese error en particular no se informó porque un error diferente se detuvo chownprimero: no había más argumentos, por lo que no había nada especificado para chownoperaren.

Para decirlo de otra manera, si ejecutara sudo chown $USER -R /usr/bin/.folder/, se expandiría sudo chown ek -R /usr/bin/.folder/e chowninterpretaría sus argumentos de esta manera:

  • ek: nombre de usuario, ya que aún no se ha pasado ningún argumento de nombre de usuario
  • -R: opción recursiva (el encabezado -es lo que hace chownsaber que es un argumento de opción)
  • /usr/bin/.folder/: archivo o directorio para cambiar la propiedad, ya que el nombre de usuario ya fue pasado

Pero si ejecutara sudo chown $user -R /usr/bin/.folder, se expandiría sudo chown -R /usr/bin/.folder/e chowninterpretaría sus argumentos de esta manera:

  • -R: opción recursiva
  • /usr/bin/.folder/: nombre de usuario, ya que aún no se ha pasado ningún argumento de nombre de usuario

Otras lecturas

Para más información, te puede interesar:

Respuesta2

Utilice $USERen lugar de $user.

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

Respuesta3

userProbablemente la variable esté vacía. Intentar $USER.

información relacionada