<Précédent | Table des matières | Suivant>
3.2. Orientation dans le système de fichiers
3.2.1. Le chemin
Lorsque vous voulez que le système exécute une commande, vous n'avez presque jamais besoin de donner le chemin complet de cette commande. Par exemple, nous savons que le ls la commande est dans le / bin répertoire (vérifier avec qui -a ls), mais nous n'avons pas à entrer la commande /bin/ls pour que l'ordinateur liste le contenu du répertoire courant.
Le manuel de formation PATH La variable d'environnement s'occupe de cela. Cette variable répertorie les répertoires du système où les fichiers exécutables peuvent être trouvés, et permet ainsi à l'utilisateur d'économiser beaucoup de saisie et de mémorisation des emplacements de commandes. Le chemin contient donc naturellement beaucoup de répertoires contenant coffre quelque part dans leurs noms, comme le montre l'utilisateur ci-dessous. Les echo commande permet d'afficher le contenu ("$") de la variable PATH:
rogier :> echo $CHEMIN
/opt/local/bin:/usr/X11R6/bin:/usr/bin:/usr/sbin/:/bin
rogier :> echo $CHEMIN
/opt/local/bin:/usr/X11R6/bin:/usr/bin:/usr/sbin/:/bin
Dans cet exemple, les répertoires /opt/local/bin, /usr/X11R6/bin, / usr / bin, / usr / sbin et
/ bin sont ensuite recherchés pour le programme requis. Dès qu'une correspondance est trouvée, la recherche est arrêtée, même si tous les répertoires du chemin n'ont pas été recherchés. Cela peut conduire à des situations étranges. Dans le premier exemple ci-dessous, l'utilisateur sait qu'il existe un programme appelé sendms pour envoyer un message SMS, et un autre utilisateur sur le même système peut l'utiliser, mais elle ne peut pas. La différence réside dans la configuration du PATH variable:
[jenny@blob jenny]$ sendms bash : sendsms : commande introuvable [jenny@blob jenny]$ echo $PATH
/bin:/usr/bin:/usr/bin/X11:/usr/X11R6/bin:/home/jenny/bin [jenny@blob jenny]$ su - tony
Mot de passe : tony :~>qui envoie les SMS
sendsms est /usr/local/bin/sendsms
tony :~>écho $CHEMIN
/home/tony/bin.Linux:/home/tony/bin:/usr/local/bin:/usr/local/sbin:\
/usr/X11R6/bin:/usr/bin:/usr/sbin:/bin:/sbin
[jenny@blob jenny]$ sendms bash : sendsms : commande introuvable [jenny@blob jenny]$ echo $PATH
/bin:/usr/bin:/usr/bin/X11:/usr/X11R6/bin:/home/jenny/bin [jenny@blob jenny]$ su - tony
Mot de passe : tony :~>qui envoie les SMS
sendsms est /usr/local/bin/sendsms
tony :~>écho $CHEMIN
/home/tony/bin.Linux:/home/tony/bin:/usr/local/bin:/usr/local/sbin:\
/usr/X11R6/bin:/usr/bin:/usr/sbin:/bin:/sbin
Notez l'utilisation du su (changer d'utilisateur), qui permet d'exécuter un shell dans l'environnement d'un autre utilisateur, à condition de connaître le mot de passe de l'utilisateur.
Une barre oblique inverse indique la continuation d'une ligne sur la suivante, sans Entrer séparant une ligne de l'autre.
Dans l'exemple suivant, un utilisateur souhaite appeler le wc (nombre de mots) pour vérifier le nombre de lignes d'un fichier, mais rien ne se passe et il doit interrompre son action à l'aide de la commande Ctrl+C combinaison:
cavalier :~> wc-l test
(Ctrl-C)
cavalier :~> quel wc
wc est haché (/home/jumper/bin/wc)
cavalier :~> echo $CHEMIN
/home/jumper/bin:/usr/local/bin:/usr/local/sbin:/usr/X11R6/bin:\
/usr/bin:/usr/sbin:/bin:/sbin
cavalier :~> wc-l test
(Ctrl-C)
cavalier :~> quel wc
wc est haché (/home/jumper/bin/wc)
cavalier :~> echo $CHEMIN
/home/jumper/bin:/usr/local/bin:/usr/local/sbin:/usr/X11R6/bin:\
/usr/bin:/usr/sbin:/bin:/sbin
L'utilisation de la qui la commande nous montre que cet utilisateur a un coffre-répertoire dans son répertoire personnel, contenant un programme également appelé wc. Étant donné que le programme de son répertoire personnel est trouvé en premier lors de la recherche dans le
chemins sur un appel à wc, ce programme "fait maison" est exécuté, avec une entrée qu'il ne comprend probablement pas, nous devons donc l'arrêter. Pour résoudre ce problème, il existe plusieurs manières (il y a toujours plusieurs manières de résoudre un problème sous UNIX/Linux) : une réponse pourrait être de renommer le nom de l'utilisateur wc programme, ou l'utilisateur peut donner le chemin complet de la commande exacte qu'il veut, qui peut être trouvée en utilisant le -a option à la qui commander.
Si l'utilisateur utilise plus fréquemment des programmes dans les autres répertoires, il peut modifier son chemin pour regarder en dernier dans ses propres répertoires :
cavalier :~> export PATH=/usr/local/bin:/usr/local/sbin:/usr/X11R6/bin:\
/usr/bin:/usr/sbin:/bin:/sbin:/home/jumper/bin
cavalier :~> export PATH=/usr/local/bin:/usr/local/sbin:/usr/X11R6/bin:\
/usr/bin:/usr/sbin:/bin:/sbin:/home/jumper/bin