Il semble que vous ayez une ligne de shebang mal écrite. D'après l'erreur que vous obtenez :
-bash: /usr/bin/pyAES.py: /usr/bin/python2: bad interpreter: No such file or directory
Je dirais que vous devriez définir la première ligne de /usr/bin/pyAES.py
à
#!/correct/path/to/python
où le /correct/path/to/python
peut être trouvé à partir de la sortie de :
type -P python
Il est /usr/bin/python
(pas /usr/bin/python2
) sur mon système.
Le premier obstacle est que vous devez indiquer au shell où trouver le programme. Si vous ne mettez aucune indication de répertoire, vous ne pouvez exécuter que les fichiers exécutables situés dans le chemin de recherche des exécutables décrit par le PATH
Variables d'environnement. Le répertoire courant n'est pas dans le chemin de recherche à moins que vous ne l'y mettiez. Alors lancez ./pyAES.py
.
Pour exécuter un programme, vous devez disposer des autorisations d'exécution sur celui-ci :
chmod +x pyAES.py
Si vous obtenez un message du type "mauvais interprète :aucun fichier ou répertoire de ce type" ou simplement "aucun fichier ou répertoire de ce type" sur un fichier existant, cela signifie qu'il y a une erreur dans la ligne shebang du script. (Voir /bin/sh:./check-dependencies.pl:not found — but check-dependencies.pl existe! pour une explication plus détaillée.) La ligne shebang est la première ligne du script et indique l'emplacement de l'interpréteur .
Pour éviter de coder en dur le chemin d'accès à un interpréteur (par exemple, /usr/bin/python
ou /usr/local/bin/python
), vous pouvez utiliser le /usr/bin/env
programme comme trampoline :
#!/usr/bin/env python
La PEP 304 précise que #!/usr/bin/env python2
est le droit de se référer à Python 2.x. Cependant, il existe de nombreux systèmes existants où Python 2.x n'est fourni que sous le nom python
et non python2
. Il se peut donc que vous ayez à jongler entre les deux. Si vous disposez des autorisations root et que votre distribution ne fournit que Python 2.x en tant que python
ou ne fournit que python2
, créez un lien symbolique vers l'autre nom.
Si vous voyez l'erreur ":Aucun fichier ou répertoire de ce type" (sans rien avant les deux-points), cela signifie que votre ligne shebang a un retour chariot à la fin, probablement parce qu'elle a été modifiée sous Windows. Supprimez le CR :la ligne shebang doit avoir une fin de ligne Unix (saut de ligne uniquement).
L'erreur "command not found"
vous obtenez parce que cet exécutable n'existe pas dans /bin/
ou /usr/bin/
tous les chemins en $PATH
variables.
Lorsque vous exécutez une commande, le shell backend recherche cet exécutable/binaire dans PATH , par exemple. /bin/
/usr/bin/
etc...
Donc, si le chemin n'est pas correctement défini, vous serez confronté à ce problème.
et lorsque vous utilisez " ./command
" alors il exécutera cette commande à partir du répertoire actuel, la variable PATH n'est pas utilisée pour rechercher le nom du fichier