![¡Cambiar la propiedad de la carpeta no funciona!](https://rvso.com/image/1083740/%C2%A1Cambiar%20la%20propiedad%20de%20la%20carpeta%20no%20funciona!.png)
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 $user
no funcionan
Para aclarar y ampliar lo que otrostener dicho, las variables de shell y de entorno distinguen entre mayúsculas y minúsculas. user
y USER
son variables diferentes, por lo que sus contenidos (a los que $user
y $USER
expandirse, respectivamente) pueden ser diferentes. Por lo general, no user
se define ninguna variable llamada y $user
se expande a nada, mientras que lo que desea es $USER
cuál se expandiría a su nombre de usuario.
El echo
comando 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 $USER
si 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 user
probablemente no estaba definido, $user
se expandió a nada y fue equivalente a ejecutar:
sudo chown -R /usr/bin/.folder/
La -R
opción actúa chown
sobre cada archivo en un árbol de directorios, como probablemente sepa. Desde que $user
se expandió a nada, /usr/bin/.folder/
fue el primerono opciónargumento para chown
y, por lo tanto, se interpretó como el argumento que especifica la propiedad deseada (como un nombre de usuario). /usr/bin/.folder
no es una sintaxis válida para eso, pero ese error en particular no se informó porque un error diferente se detuvo chown
primero: no había más argumentos, por lo que no había nada especificado para chown
operaren.
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 chown
interpretarí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 hacechown
saber 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 chown
interpretarí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 $USER
en lugar de $user
.
sudo chown $USER -R /usr/bin/.folder/
Respuesta3
user
Probablemente la variable esté vacía. Intentar $USER
.