Dans ce tutoriel, nous allons examiner les causes de l’erreur “commande introuvable” lors de l’utilisation de sudo et explorer les correctifs possibles.

Linux Variable

Variable de CHEMIN

La variable LinuxPATHPATH spécifie une liste de répertoires séparés par deux-points à rechercher lors de l’exécution d’une commande. Par exemple, la valeur par défaut de cette variable est généralement /usr/bin: /usr/local/bin, qui indique au shell de rechercher /usr/bin et /usr/local/bin lorsque nous exécutons une commande. Cela nous permet simplement d’utiliser ls au lieu de /usr/bin/ls pour exécuter ls.

Si nous supprimons /usr/bin dePATHPATH, ls ne sera pas trouvé:

$ echo $PATH
/usr/bin: /usr/local/bin
$ ls
Télécharge des fichiers de Musique…
PATHCHEMIN =/usr/local/bin
$ ls
/bin/sh:ls: introuvable

Nous pouvons ajouter des répertoires supplémentaires en définissant PATH=” PATHPATH:/path/to/my/directory:/path/to/another/directory”.

Disons que nous avons un script appelé « myscript » dans le répertoireHOMEHOME / bin, et que nous voulons l’exécuter sans taper le chemin complet à chaque fois. Nous ajoutons simplementHOMEHOME/bin àPATHPATH:
freestar

mys myscript
/bin/sh: myscript: introuvable
PATHPATH= »PATHPATH:HOMEHOME/bin »
mys myscript
Mon Scénario !
mys quel myscript
/ accueil / baeldung / bin / myscript

« Autorisation Refusée » Lors De L’Exécution Du Script

Parfois, nous pouvons obtenir une erreur « autorisation refusée » lorsque nous essayons d’exécuter des scripts. Cela se produit si les scripts n’ont pas de jeu de bits exécutables et sont traités comme des fichiers texte à la place.

Nous pouvons exécuter chmod avec l’indicateur +x pour marquer les fichiers comme exécutables:

echoecho « echo Bonjour » > myscript
$ ./ myscript
/ bin/sh : ./myscript : Autorisation refusée
ch chmod + x./ myscript
$ ./ myscript
Bonjour

Correction de l’erreur « Commande Introuvable”

L’erreur ”commande introuvable » peut se produire si nous avons défini un CHEMIN custom personnalisé pour exécuter nos scripts. En effet, sudo peut exécuter des commandes avec un nouvel environnement au lieu d’hériter de variables d’environnement modifiées.

Correction de l’erreur pour une seule commande

Nous pouvons passer l’indicateur -E à sudo pour qu’il préserve les variables d’environnement actuelles:

$ echo $PATH
/usr/bin: /accueil / baeldung/bin
mys myscript
Mon Script Fonctionne Comme baeldung
su sudo myscript
sudo: myscript: commande introuvable
su sudo-E myscript
Mon Script S’Exécute En Tant Que root

Ici myscript se trouve dans /home/baeldung/bin.
freestar

Correction permanente de l’erreur

Pour corriger cette erreur de manière permanente, nous pouvons soit configurer sudo pour qu’il hérite toujours de la variablePATHPATH, soit définir manuellement unPATHPATH pour celle-ci en modifiant /etc/sudoers.

Tout d’abord, nous devons exécuter visudo pour ouvrir le fichier /etc/sudoers pour modification. Maintenant, nous pouvons utiliser l’option env_keep pour rendre sudo inheritPATHPATH:

Valeurs par défaut env_keep+= »CHEMIN »

Au lieu de cela, nous pouvons également coder en durPATHPATH avec l’option secure_path où /path/to/my/directory est le répertoire que nous voulons ajouter:

Par défaut, secure_path = »/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/chemin/vers/mon/répertoire »

Nous devons noter que la valeur de secure_path est codée en dur et ne sera pas mise à jour dynamiquement si nous modifions la variablePATHPATH. Par conséquent, /etc/sudoers doit être modifié manuellement.

Conclusion

Dans cet article, nous avons discuté de la variable LinuxPATHPATH et exploré comment sudo interagit avec elle. Nous avons également appris à configurer sudo pour résoudre les problèmes courants avecPATHPATH.