3 votes

Bug dans BSD : à qui dois-je le signaler ?

J'ai trouvé ce que je pense être un bug dans la commande chown dans OS X 11.6. Il semble fonctionner à l'inverse de sa page de manuel, en ignorant l'option -f drapeau.

T_MaceT 33 ) chown -f T_MaceT foo
chown: foo: No such file or directory
T_MaceT 34 ) echo $?
1

Selon la page de manuel, l'utilisation de -f il doit ignorer que le fichier n'existe pas et ne doit pas modifier la valeur de retour. (J'ai testé le comportement correct sur RedHat 6 pour comparaison).

Je ne sais pas qui (si quelqu'un) corrigerait ce genre de bogues. La page de manuel fait référence à BSD. Y a-t-il un projet actif qui supporte ce genre de choses ?

1 votes

@macetw, Vous avez dit, " Selon la page de manuel, l'utilisation de -f il doit ignorer que le fichier n'existe pas et ne doit pas modifier la valeur de retour. "et ce n'est pas du tout ce que dit la page de manuel de chown sous MacOS !

1 votes

L'option f est une extension de la norme POSIX et ne doit pas être considérée comme portable.

0 votes

Les perceptions sont différentes. En tant qu'utilisateur de longue date de Linux, je m'attends à ce que "-f" soit le moyen standard de "forcer l'exécution de l'action et de ne pas m'en plaindre". Ce comportement est vrai (sous Linux) pour "rm", "mv", "cp", etc. En particulier avec "rm", je fais cela tout le temps, que le fichier pourrait ne pas exister. La question que j'ai posée dans le titre reste ouverte : Si je veux améliorer l'expérience du shell de commande sur Mac, où dois-je documenter mon bug/suggestion ?

5voto

user3439894 Points 52496

Ce n'est pas un bug, c'est une documentation mal écrite. Le site -f option pour chown États :

Ne signalez pas les échecs de changement de propriétaire ou de groupe de fichiers, et ne modifiez pas l'état de sortie pour refléter ces échecs.

Cela signifie que le -f option n'est applicable que si la cible fichier existe et il y a eu une erreur dans la modification de la propriétaire o groupe de la fichier ce que, bien sûr, vous ne pouvez pas faire sur une inexistante. fichier comme dans l'exemple du PO sous MacOS.

Pour montrer que le -f option fonctionne effectivement comme prévu, utilisez les éléments suivants commandement composé dans le terminal tout en ne le faisant pas comme root ou en utilisant sudo :

touch ${TMPDIR}testfile; chown root ${TMPDIR}testfile; echo $?; rm ${TMPDIR}testfile

La sortie sera, par exemple, la suivante :

chown: /var/folders/7l/lcvbc47n3sd7jcztdhc9c_pw0000gn/T/testfile: Operation not permitted
1

Dans cette première forme, sans le -f option il échoue, exits >0, parce que les chown commande essaie de définir le propriétaire de ${TMPDIR}testfile à root tout en étant exécuté non pas comme root et ne pas utiliser sudo .

Maintenant, exécutez avec le -f option :

touch ${TMPDIR}testfile; chown -f root ${TMPDIR}testfile; echo $?; rm ${TMPDIR}testfile

La sortie sera :

0

Dans cette deuxième forme, avec le -f option si elle réussit, elle sort avec 0 sans avoir fait aucun changement, car elle n'a pas été faite de la manière suivante root et ne pas utiliser sudo ce qui est nécessaire pour modifier le propriétaire d'un fichier à root .


Notez que chaque OSes chown n'est pas égal à l'autre dans toutes ses fonctionnalités. En d'autres termes, bien que je n'aie pas Red Hat, comme mentionné dans l'OP, j'ai Linux Mint à comparer, et la page de manuel de Linux Mint -f option pour chown États :

supprimer la plupart des messages d'erreur

Comme vous le voyez le plus est le mot-clé, donc il ne supprime pas tous messages d'erreur dans Linux Mint, ni la description de ce que les -f fait avec chown sous Linux Mint aussi détaillée et explicite que sous MacOS.

Alors que dans Linux Mint, pas comme root ou en utilisant sudo , chown -f root non_existant_filename ne produira pas d'erreur, cependant, son code de sortie est 1 pas 0 comme c'est le cas avec le système MacOS chown exemple ci-dessus en utilisant -f dans son contexte défini.

1 votes

Les perceptions sont différentes. En tant qu'utilisateur de longue date de Linux, je m'attends à ce que "-f" soit le moyen standard de "forcer l'exécution de l'action et de ne pas m'en plaindre". Ce comportement est vrai (sous Linux) pour "rm", "mv", "cp", etc. En particulier avec "rm", je fais cela tout le temps, que le fichier pourrait ne pas exister. La question que j'ai posée dans le titre reste ouverte : Si je veux améliorer l'expérience du shell de commande sur Mac, où dois-je documenter mon bug/suggestion ?

0 votes

@macetw Cette réponse démontre de manière convaincante qu'il ne s'agit pas d'un bogue. Votre contre-argumentation semble concéder que ce n'est pas un bug, donc peut-être devriez-vous changer le mot "bug" dans la question par quelque chose comme "défaut de conception" - dans ce cas, vous cherchez un endroit pour discuter de la question de l'utilisation de l'Internet. justification de la conception des différentes caractéristiques ? Pour plus d'informations sur le signalement des bogues, voir, par exemple, developer.apple.com/bug-reporting y freebsd.org/support/bugreports.html

0 votes

@macetw, je suis moi aussi un utilisateur de longue date de Linux, mais le fait que nous soyons des utilisateurs de longue date de Linux n'est pas du tout pertinent, car MacOS n'est pas Linux et, comme nous l'avons déjà dit, le -f n'est pas la même selon les plates-formes OS et les versions de chown . Je pense que mon test confirme qu'il fonctionne comme prévu sous MacOS. Cela dit, il y a d'autres façons de coder pour éviter les sorties indésirables. Je suppose que vous écrivez quelque chose pour lequel vous ne voulez afficher que des sorties propres, comme le fait la fonction -f n'est pas vraiment nécessaire dans le cas d'une commande unique émise sur la ligne de commande. Suite dans le prochain commentaire.

LesApples.com

LesApples est une communauté de Apple où vous pouvez résoudre vos problèmes et vos doutes. Vous pouvez consulter les questions des autres utilisateurs d'appareils Apple, poser vos propres questions ou résoudre celles des autres.

Powered by:

X