No es un error, es una documentación mal escrita. La opción -f
para chown
estados:
No informe ningún error al cambiar el propietario o grupo del archivo, ni modifique el estado de salida para reflejar dichos errores.
Esto significa que la opción -f
solo es aplicable si existe el archivo de destino y hubo un error al cambiar el propietario o < em> group del archivo , que por supuesto no puede hacer en un archivo inexistente como en el ejemplo OP en macOS.
Para mostrar que la opción -f
realmente funciona según lo previsto, use el siguiente comando compuesto en la Terminal mientras no lo haga como root
o use 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 la opción -f
falla, sale > 0, porque el comando chown
está tratando de establecer el el propietario de ${TMPDIR}testfile
a root
mientras se ejecuta no como root
y no usa sudo
.
Ahora ejecute con la opción -f
:
touch ${TMPDIR}testfile; chown -f root ${TMPDIR}testfile; echo $?; rm ${TMPDIR}testfile
La salida será:
0
En esta segunda forma, con la opción -f
, tiene éxito, sale con 0 sin haber realizado ningún cambio, ya que no se realizó como root
y no usó sudo
, que es necesario para cambiar el propietario de un archivo a root
.
Tenga en cuenta que cada sistema operativo chown
no es igual en todas las funciones entre sí. En otras palabras, aunque no tengo Red Hat, como se mencionó en el OP, tengo Linux Mint para comparar y la página del manual en Linux Mint -f
opción para chown
estados:
suprimir la mayoría de los mensajes de error
Como ve, la mayoría es la palabra clave, por lo que no suprime los mensajes de error todos en Linux Mint, ni la descripción de lo que -f
hace con chown
en Linux Mint, tan detallado y explícito como en macOS.
Entonces, mientras que en Linux Mint, no como root
o usando sudo
, chown -f root non_existant_filename
no generará un error, sin embargo, su código de salida es 1
, no 0
como está con el macOS% Ejemplo de chown
anterior usando -f
dentro de su contexto definido.