Retourner au contenu associé (journal : Python à trou : trouve ton environnement)
Posté par Benoît Sibaud (site web personnel) le 26 février 2025 à 09:45. 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)
strace
-> 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)
AltStyle によって変換されたページ (->オリジナル) / アドレス: モード: デフォルト 音声ブラウザ ルビ付き 配色反転 文字拡大 モバイル
[^] # Re: Maintenant qu'on est vendredi...
Posté par Benoît Sibaud (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.
Et la raison : dans le parcours du PATH, il ne trouve pas la commande. Il existe bien une commande '[' dans /usr/bin.
Mais il n'existe pas de commande '[-f' dans /usr/bin (ou ailleurs dans le PATH)
(info tirée d'un
stracesur 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 :