No es un error, que es mal documentación escrita. El -f
opción para chown
estados:
No informar de cualquier fallo para cambiar el propietario del archivo o grupo, ni modificar el estado de salida para reflejar dichos errores.
Esto significa que el -f
opción sólo es aplicable si el objetivo de archivo existe y que hubo un error en el cambio de la titular o de grupo del archivo, que por supuesto no se puede hacer en una inexistente archivo como en el OP ejemplo en macOS.
Para mostrar que el -f
opción realmente funciona como se pretende, utilice el siguiente comando compuesto en la Terminal, mientras que no hacerlo como root
o usando sudo
:
touch ${TMPDIR}testfile; chown root ${TMPDIR}testfile; echo $?; rm ${TMPDIR}testfile
La salida será, por ejemplo:
chown: /var/folders/7l/lcvbc47n3sd7jcztdhc9c_pw0000gn/T/testfile: Operation not permitted
1
En esta primera forma, sin el -f
opción falla, sale >0, debido a que el chown
comando está tratando de establecer el propietario de ${TMPDIR}testfile
a root
, mientras que siendo ejecutado no como root
y no el uso de sudo
.
Ahora se ejecutan con la -f
opción de:
touch ${TMPDIR}testfile; chown -f root ${TMPDIR}testfile; echo $?; rm ${TMPDIR}testfile
La salida será:
0
En esta segunda forma, con la -f
opción, se realiza correctamente, sale con 0 sin haber realizado ningún cambio, porque no se hizo como root
y no el uso de sudo
, la cual es necesaria para cambiar el propietario de un archivo a root
.
Tenga en cuenta que cada uno de los sistemas operativos chown
no es igual en todas las funciones para cada uno de los otros. En otras palabras, mientras que no tengo Red Hat, como se mencionó en el OP, tengo Linux Mint a comparar, y la página man de Linux Mint -f
opción para chown
estados:
suprimir la mayoría de los mensajes de error
Como se puede ver la mayoría es la palabra clave, por lo que no suprimir todos los mensajes de error en Linux Mint, ni es la descripción de lo -f
con chown
bajo Linux Mint como detallado y explícito como en macOS.
Así, mientras que en Linux Mint, no como root
o usando sudo
, chown -f root non_existant_filename
no va a la salida de un error, sin embargo, su código de salida es 1
, no 0
como es con el macOS chown
ejemplo anterior, usando -f
dentro de su contexto definido.