web-dev-qa-db-fra.com

Chaque commande échoue avec "commande introuvable" après la modification de .bash_profile?

J'étais en train de mettre à jour mon fichier .bash_profile, et malheureusement, j'ai fait quelques mises à jour et maintenant je reçois:

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 récupère en fait d’autres fichiers .sh (les sources), je ne suis donc pas tout à fait sûr de la modification qui l’a peut-être provoqué.

Maintenant, si j’essaie même de consulter une liste de fichiers, j’obtiens:

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

Quelques conseils sur la manière de localiser la source de l'erreur et de pouvoir utiliser le terminal pour des tâches de base telles que la liste des fichiers, etc.?

41
Blankman

Il me semble qu'à un moment ou à un autre, vous écrasez la variable d'environnement par défaut PATHname__. Le type d'erreur que vous avez indique que PATHne contient pas /bin, où résident les commandes ci-dessus (y compris bashname__).

Par exemple, si vous le faites

PATH=/home/user/bin

au lieu de

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

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

$ bash --login -x

Cela vous montrera chaque commande et ses arguments, qui sont exécutés lors du démarrage de ce shell.

L'option --login est spécifiée car .bash_profile est lu par les shells de connexion. Vous trouverez plus d’informations sur le débogage des scripts bash à l’adresse suivante: http://tldp.org/LDP/Bash-Beginners-Guide/html/sect_02_03.html .

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

18
K. P. MacGregor

J'ai peut-être trouvé le problème. Cela a fonctionné pour moi, et cela pourrait fonctionner pour vous ...

J'étais par défaut avec mon éditeur pour Windows (LF/CR) enregistre. Depuis que j'utilise les deux systèmes, cela semblait logique. Quand j'ai eu besoin de jouer avec mon .bash_profile, j'ai réalisé, après avoir commenté et essayé, que rien ne fonctionnait. J'ai changé mes sauvegardes au format OS X (CR uniquement) et le tour est joué! Plus de "commande introuvable" dans le terminal!

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

9
cyphire

Après je ne pouvais pas re-courir. ~/.bash_profile ou toute commande habituelle telle que whoami, grep, etc. J'ai imaginé un moyen de simplement réexporter les chemins requis:

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 dans la plupart des systèmes, même si certains de ces chemins ne sont pas présents dans tous les packages Linux. Cela a fonctionné pour moi.

5
Ananth

Je pense que j'ai peut-être trouvé la solution au problème si ce n'est pour vous alors pour ceux qui ont un problème similaire. Ma réponse à cela est que je n'ai pas de .bash_profile.

Donc, je cherchais sur le Web et j'ai trouvé la solution. En gros, ouvrez le terminal, tapez touch ~/.bash_profile et appuyez sur Enter. Cela a résolu mes problèmes. J'espère que ça fait la même chose pour vous

4
Paul

J'ai le même problème que toi. Je ne peux pas utiliser beaucoup de commandes populaires (ls, vi/vim, ..) et je ne peux pas modifier /root/.bashrc lorsque je me connecte avec su dans la racine.

Finalement. J'ai trouvé la solution à ce problème. Il suffit de vous connecter root avec la commande:

su -m

Après cela, vous pouvez utiliser

vim /root/.bashrc

modifier PATH.

Bonne chance!

2
MrReS

J'ai eu le même problème. Vous avez peut-être manqué un $ en exportant PATH. Vous devez ouvrir le fichier .bash_profile dans TextEdit. Si vous ne trouvez pas le fichier dans le répertoire, appuyez sur Commande + Maj +> pour afficher les fichiers cachés.

Puis corrigez le PATH puis sauvegardez.

Dans le répertoire sur Terminal, tapez: source .bash_profile.

Cela devrait résoudre le problème.

1
Kensam

J'ai eu le même problème tout à l'heure après avoir changé le .bash_profile. Et je veux revenir en arrière mais je ne peux plus, car j'ai perdu toutes les commandes, en particulier les commandes nano et vim, je ne peux donc pas ouvrir le fichier .bash_profile avec la commande. Et le .bash_profile est un fichier caché que je ne peux pas ouvrir avec le Finder.

Je dois donc trouver un moyen d'ouvrir le fichier .bash_profile. Après avoir essayé de nombreuses façons, j'ai découvert que je pouvais utiliser Atom, car Atom peut lire tous les fichiers d'un dossier de projet, inclure les fichiers cachés. Il suffit donc d’ouvrir Atom, de sélectionner le File -> Open, de choisir le dossier <yourusername>, puis tous les fichiers cachés apparaissent dans la vue arborescente d’Atom, y compris le .bash_profile !! Après avoir retiré la dernière modification et rouvert le terminal, toutes les commandes sont revenues! :)

1
backslash112

J'ai eu exactement le même problème:

Si je mets dans lxterminal:

set | grep "jerom/bash"
PATH=/usr/lib/lightdm/lightdm:/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/usr/games:/usr/local/games:/home/jerom/bash/

si j'ai entré exactement la même commande dans tty2, j'ai:

set | grep "jerom/bash"
PATH=/usr/lib/lightdm/lightdm:/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/usr/games:/usr/local/games:/home/jerom/bash\r

\ r signifie DOS en fin de ligne, alors j’ai ouvert le fichier ~/.bashrc et modifié les fins de lignes dans Krusader au style unix. Et ça marche déjà !!! :-)

Les EOLs DOS posent également des problèmes épineux dans les scripts bash.

1
xerostomus