• # Signification de "./"

    Posté par . En réponse au message Signification de "./". Évalué à 4.

    Alors le "." désigne le répertoire courant, de même que ".." désigne le répertoire parent. Quant au "/", il désigne le séparateur entre le répertoire.

    Donc "./programme" désigne le fichier programme qui se trouve dans le répertoire courant, de même que "../programme" désigne le fichier programme qui se trouve dans le répertoire parent.

    Alors au sujet de savoir pourquoi on ne peut pas faire simplement "programme", il faut savoir que quant tu fais quelque chose comme "ls" depuis le shell, celui-ci va chercher à exécuter ls en utilisant le contenu de la variable d'environnement PATH (pour connaître ton PATH, il faut faire echo $PATH sous bash). Si ton PATH contient, "/bin:/usr/bin" et que tu fais ls, le shell va chercher d'abord à exécuter /bin/ls. S'il n'avait pas trouvé /bin/ls il aurait tenter d'exécuter /usr/bin/ls puis /usr/bin/ls, etc. Incidemment si tu ouvres une fenêtre de console, et que tu tentes de faire unset PATH, puis ls tu vas obtenir une erreur.

    Il est possible de mettre le répertoire "." dans son PATH, (dans ce cas, la commande programme marche s'il y a bien un fichier exécutable programme) mais ça peut poser un problème de sécurité. Imagine que dans le répertoire /tmp un petit malin crée un script sl qui efface tout le disque (rm -rf /) et que root arrive dans le répertoire /tmp, qu'il tape sl au lieu de ls (ça m'arrive régulièrement). Je te laisse imaginer ce qui se passe.

    Voilà