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

47

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

Avez-vous des conseils pour savoir quelle est la source de l'erreur et comment utiliser le terminal pour des tâches de base, telles que lister des fichiers, etc.?

Blankman
la source
Que se passe-t-il si vous utilisez le chemin complet comme suit: / bin / ls? Et quels genres de changements faisiez-vous?
KP MacGregor
2
Oui, coller votre .bash_profile
Janvier
/ bin / ls liste les fichiers, mais je vois ces 2 lignes en dessous:-bash: sed: command not found -bash: git: command not found
Blankman
/etc/environmentSi votre problème se posait, utilisez la commande suivante (en centos 6):ssh -t root@<server-ip> "/bin/bash -c '/bin/mv /etc/environment /tmp/'"
Edenshaw

Réponses:

66

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

Par exemple, si vous le faites

PATH=/home/user/bin

au lieu de

PATH="$PATH":/home/user/bin
janvier
la source
C'est ce que j'ai fait à un moment donné:export PATH=PATH:EC2_HOME/bin
Blankman, le
2
Vous devez utiliser '$' dans la deuxième chaîne de PATH - export PATH=$PATH:EC2_HOME/bin
Manula Waidyanatha
Etrange comment "ec2-describe-regions" ne fonctionne pas, même si c'est sur mon chemin, pourtant cela fonctionne: $ EC2_HOME / bin / ec2-describe-regions J'ai également rechargé une source ....
Blankman
2
Regardez, nous ne savons pas ce que vous faites, quels autres fichiers vous recherchez, ce qu’ils contiennent. Et oui, chaque fois que vous sourcez le fichier, vous ajoutez des éléments à votre chemin (ce qui est bien, car normalement .bash_profile sera lu en une seule fois). Parcourez-les un par un et voyez ce qui se passe. De plus, EC2_HOME n'est-il pas une variable? Si oui, alors vous devriez le faire précéder d'un $comme celui - ci:export PATH=$PATH:$EC2_HOME/bin
Janvier
1
Je ne compte plus le nombre de fois où j'ai collé à ce problème et combien de fois cette réponse m'a beaucoup aidé
Herrgott
21

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 mérite une lecture pour les problèmes futurs.

KP MacGregor
la source
obtenu ceci: -bash: bash: commande non trouvée
Yassine Qoraiche
10

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é des choses 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!

cyphire
la source
Une chose très subtile qui me rendait folle. Merci d'avoir ajouté cette réponse!
samuel.molinski
C'est ce que je vivais! Merci. Le conseil rapide utilise cette commande pour convertir des fichiers sur votre environnement Unix:$ dos2unix .bash_profile
melwil
Êtes-vous sûr que c'est ce que vous avez fait? OS X étant Unix, il utilise des fins de ligne de style Unix avec un seul caractère de saut de ligne (LF), pas de retour de chariot (CR). Les seuls systèmes d'exploitation populaires qui utilisaient ce dernier étaient OS 9 et versions antérieures et les applications Linux / Ubuntu seraient assez déroutantes.
David Foerster le
6

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.

Ananth
la source
4

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. Ce qui est fondamentalement ouvrir le terminal, tapez touch ~/.bash_profileet appuyez sur Enter. Cela a résolu mes problèmes. J'espère que ça fait la même chose pour vous

Paul
la source
8
LOL ... -bash: touch: commande non trouvée
Kumar KL
2

J'ai le même problème que toi. Je ne peux pas utiliser beaucoup commande populaire ( ls, vi/vim, ..) et ne peut pas modifier /root/.bashrclorsque je me connecte avec suen 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!

MrReS
la source
2

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.

Kensam
la source
Merci, ça a résolu mon problème, finalement j'ai pu éditer mon fichier bash_profile.
Touseef Murtaza le
1

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 ~/.bashrcet 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.

xérostome
la source
1

J'ai le même problème tout à l'heure après avoir changé le fichier .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 .bash_profilec'est un fichier caché que je ne peux pas ouvrir avec le Finder.

J'ai donc besoin de trouver un moyen d'ouvrir le fichier .bash_profile. Après avoir essayé de nombreuses manières, j'ai découvert que je pouvais utiliser Atom , car Atom peut lire tous les fichiers d'un dossier de projet, y compris les fichiers cachés. Donc, ouvrez simplement Atom, sélectionnez le dossier File -> Openchoisi <yourusername>, puis tous les fichiers cachés apparaissent dans l'arborescence de l'Atom, incluez le fichier .bash_profile!! Après avoir retiré la dernière modification et rouvert le terminal, toutes les commandes sont revenues! :)

backslash112
la source