web-dev-qa-db-fra.com

commande mkdir introuvable dans le script bash

Je ne sais pas pourquoi j'obtiens une erreur lors de l'exécution de ce script simple:

#!/bin/bash

read -p "Please enter directory name: " DIR
read -p "Please enter the path: " PATH
mkdir -p "$PATH/$DIR"
line 7: mkdir: command not found
15
MLSC

N'utilisez pas la variable PATH. Cette variable contient une liste de répertoires pour rechercher des programmes exécutables. Puisque vous le remplacez, le script ne peut plus trouver le programme mkdir.

En général, évitez d'utiliser des variables qui sont toutes en majuscules, elles sont souvent utilisées comme paramètres pour le shell ou d'autres programmes.

39
Barmar

La variable PATH est une variable d'environnement importante - c'est la façon dont les programmes (comme mkdir) sont trouvés, et vous l'écrasez. Vous ne devriez pas faire ça, mais si vous devez alors:

/bin/mkdir -p "$PATH/$DIR"

mais honnêtement, n'utilisez pas de majuscules! Il y a beaucoup de variables réservées ou spéciales dans Bash, et si vous ne vous en souvenez pas toutes, rappelez-vous simplement que toutes sauf une sont en MAJUSCULE. Les variables dans Bash sont sensibles à la casse, comme dans tous les langages de programmation sensibles.

5
cdarke