59 votes

Chaque commande échoue avec "command not found" après avoir modifié .bash_profile ?

Je mettais à jour mon .bash_profile, et malheureusement j'ai fait quelques mises à jour et maintenant j'obtiens :

env: bash: No such file or directory
env: bash: No such file or directory
env: bash: No such file or directory
env: bash: No such file or directory
env: bash: No such file or directory
-bash: tar: command not found
-bash: grep: command not found
-bash: cat: command not found
-bash: find: command not found
-bash: dirname: command not found
-bash: /preexec.sh.lib: No such file or directory
-bash: preexec_install: command not found
-bash: sed: command not found
-bash: git: command not found

Mon bash_profile tire en fait d'autres fichiers .sh (les sources), je ne suis donc pas sûr de la modification qui a pu causer ce problème.

Maintenant, si j'essaye d'accéder à une liste de fichiers, j'obtiens :

>ls
-bash: ls: command not found
-bash: sed: command not found
-bash: git: command not found

Avez-vous des conseils pour retrouver la source de l'erreur, et pour pouvoir utiliser le terminal pour des choses basiques comme lister des fichiers, etc ?

76voto

January Points 33673

Il me semble qu'à un moment ou à un autre, vous écrasez les données par défaut. PATH variable d'environnement. Le type d'erreurs que vous avez, indique que PATH ne contient pas /bin où les commandes ci-dessus (y compris bash ) résident.

Par exemple, si vous faites

PATH=/home/user/bin

au lieu de

PATH="$PATH":/home/user/bin

25voto

BMDan Points 7059

Une façon de commencer à déboguer votre script bash serait de démarrer un subshell avec l'option -x :

$ bash --login -x

Cela vous montrera chaque commande, et ses arguments, qui est exécutée lors du démarrage de ce Shell.

L'option --login est spécifiée car .bash_profile est lu par les shells de connexion. Des informations supplémentaires sur le débogage des scripts de bash peuvent être trouvées ici : http://tldp.org/LDP/Bash-Beginners-Guide/html/sect_02_03.html .

En définitive, je pense que la suggestion de janvier vous conviendra, mais ce lien vaut la peine d'être lu pour les problèmes futurs.

13voto

cyphire Points 131

J'ai peut-être trouvé le problème. Ça a marché pour moi, et ça pourrait marcher pour vous...

Avec mon éditeur, j'utilisais par défaut les sauvegardes Windows (LF/CR). Comme j'utilise les deux systèmes, cela semblait logique. Lorsque j'avais besoin de modifier mes .bash_profile J'ai réalisé après avoir fait des commentaires et essayé des choses que rien ne fonctionnait. J'ai changé mes sauvegardes au format OS X (CR seulement) et voilà ! Plus de "command not found" dans le terminal !

C'est peut-être aussi simple que ça !

6voto

CCondron Points 342

Après que je n'ai pas pu réexécuter. ~/.bash_profile ou toute autre commande habituelle comme whoami, grep, etc. j'ai trouvé un moyen de simplement réexporter les chemins nécessaires :

export PATH=/usr/local/jdk/bin:/usr/kerberos/sbin:/usr/kerberos/bin:/usr/local/sbin:usr/local/bin:/sbin:/bin:/usr/sbin:/usr/bin:/opt/cpanel/composer/bin:/usr/local/easy/bin:/usr/local/bin:/usr/X11R6/bin:/root/bin

Cela devrait fonctionner sur la plupart des systèmes, bien que certains de ces chemins ne soient pas présents dans tous les paquets Linux. Cela a fonctionné pour moi.

4voto

Paul Points 41

Je pense avoir trouvé la réponse au problème, si ce n'est pas pour vous, alors pour d'autres qui ont un problème similaire. Ma réponse à ce problème est que je n'ai pas de .bash_profile .

J'ai donc cherché sur tout le web et j'ai trouvé la solution. En gros, il faut ouvrir le terminal, taper touch ~/.bash_profile et appuyez sur Enter . Cela a réglé mes problèmes. J'espère qu'il en sera de même pour vous.

SistemesEz.com

SystemesEZ est une communauté de sysadmins où vous pouvez résoudre vos problèmes et vos doutes. Vous pouvez consulter les questions des autres sysadmins, poser vos propres questions ou résoudre celles des autres.

Powered by:

X