• [^] # Re: Maintenant qu'on est vendredi...

    Posté par (site web personnel) . En réponse au journal Python à trou : trouve ton environnement. Évalué à 9. Dernière modification le 26 février 2025 à 09:45.

    $ if [ -f /dev/null ] ; then echo OK ; fi
    $ if [-f /dev/null ] ; then echo OK ; fi
    [-f : commande introuvable

    Et la raison : dans le parcours du PATH, il ne trouve pas la commande. Il existe bien une commande '[' dans /usr/bin.

    -rwxr-xr-x 1 root root 55744 avril 5 2024 '/usr/bin/['

    Mais il n'existe pas de commande '[-f' dans /usr/bin (ou ailleurs dans le PATH)

    newfstatat(AT_FDCWD, "/usr/bin/[-f", 0x7fffa185f290, 0) = -1 ENOENT (Aucun fichier ou dossier de ce nom)

    (info tirée d'un strace sur un bash)

    -> l'espace est obligatoire dans ce cas car il faut séparer l'exécutable des arguments.

    Et [[ est une builtin du shell, mais [[-f ne l'est pas et donc il se rabat sur le PATH et il ne trouve pas :

    newfstatat(AT_FDCWD, "/usr/bin/[[-f", 0x7fffa185f290, 0) = -1 ENOENT (Aucun fichier ou dossier de ce nom)