Les commandes de base ne fonctionnent pas, c'est-à-dire: -bash: ls: Aucun fichier ou répertoire de ce type

8

Je suis nouveau sur Unix et en train d'installer un programme pour ma thèse, je dois avoir joué avec le PATH pour les commandes Unix de base telles que ls. Chaque fois que je tape lset le nom du répertoire pour lequel je veux lister les fichiers, il apparaît comme:

-bash: ls: No such file or directory

Que puis-je faire pour résoudre ce problème? Toute aide est très appréciée!

Mariaa
la source
La raison pour laquelle ls ne fonctionne pas mais le cd est documenté dans ma réponse
Michael Durrant

Réponses:

23

Réinitialisez votre chemin dès maintenant (c'est-à-dire avant toute sorte de déconnexion) avec:

export PATH=/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin

Il ne récupère pas votre PATH complet mais les utilitaires de base seront à nouveau disponibles.

Voici un exemple du genre de chose qui se produit:

Vous aviez une variable PATH (appelée $ PATH lors de la lecture)

Quelque chose comme:

$ echo $PATH
/home/durrantm/.rvm/gems/ruby-2.0.0-p247/bin:/home/durrantm/.rvm/gems/ruby-2.0.0-p247@global/bin:/home/durrantm/.rvm/rubies/ruby-2.0.0-p247/bin:/home/durrantm/.rvm/bin:/h
ome/durrantm/.autojump/bin:/usr/local/heroku/bin:/home/durrantm/bin:/home/durrantm/.autojump/bin:/usr/local/heroku/bin:/home/durrantm/.autojump/bin:/usr/local/heroku/bin:
/home/durrantm/bin:/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/usr/games:/usr/local/games:/home/durrantm/.rvm/bin:/home/durrantm/.rvm/bin:/home/durrantm
/.rvm/bin

Vous avez essayé d'y ajouter, mais vous avez accidentellement utilisé

PATH=PATH:other_dir

au lieu de

PATH=$PATH:other_dir

et le résultat est que votre chemin est devenu

PATH:other_dir

puis tous les utilitaires comme ls et sed ne fonctionnent pas

Vous pouvez corriger l'ensemble minimal en faisant

export PATH=/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin

ce qui est particulièrement utile si un fichier de points de connexion gâche votre PATH
Vérifiez vos fichiers .bashrc et / ou .bash_profile pour tout changement de PATH.

Comme le dit Greg, vous pouvez également vous déconnecter (ou une option plus sûre, ouvrir une nouvelle fenêtre au cas où l'ouverture d'une nouvelle fenêtre serait cassée!), Puis faire écho à $ PATH depuis une nouvelle fenêtre.

La même chose se produit lorsque vous le faites path=sans valeurs. Il efface votre chemin d'accès actuel et provoque ces problèmes. Texte fort

Quant à savoir pourquoi , lorsque vous rencontrez ces problèmes, cd fonctionne et ls ne fonctionne pas:

  • cd est une commande "intégrée" qui n'a pas besoin de votre PATH pour trouver le programme
  • ls est un programme et doit utiliser PATH pour trouver où il se trouve.

Vous pouvez le voir avec:

$ builtin ls
-bash: builtin: ls: not a shell builtin
14:47:29 mdurrant C02MH2DQFD58 /Users/mdurrant
$ builtin cd
14:47:31 mdurrant C02MH2DQFD58 /Users/mdurrant
$

Aucune erreur signifie que la commande est intégrée

Avant de `` continuer '' (ou de vous déconnecter) ...

Assurez-vous de tester toutes les modifications (en particulier celles apportées à .bashrc, .profile, etc. qui exécutent les commandes de configuration de PATH) en ouvrant une nouvelle fenêtre ou en faisant source ~ / .bash_profile pour l'exécuter. Il est également recommandé de laisser la fenêtre et l'éditeur (lorsque vous modifiez le fichier .bash_profile) ouverts au cas où vos modifications ne fonctionneraient pas et vous empêcheraient d'ouvrir de nouvelles fenêtres pour modifier le fichier. Bien que vous puissiez toujours utiliser TextEdit ou un autre éditeur simple pour changer le fichier (en évitant la ligne de commande et vi par exemple). Attention à NE PAS redémarrer si / quand votre shell est cassé ou vous ne pourrez peut-être même pas vous connecter. et c'est vraiment vraiment mauvais (sans un autre compte à suvous être arrosé). Cela m'est arrivé!

Mon correctif `` compte supplémentaire '' était également un épargnant de vie à l'époque et fortement recommandé pour tous (faites-le maintenant!)

Michael Durrant
la source
Hey! Merci beaucoup! Je viens de réinitialiser le chemin d'accès, mais lorsque j'ouvre une nouvelle fenêtre de terminal, la même chose se produit. J'ai ensuite fait plus de ~ / .bash_profile pour vérifier les changements et cela montre ceci: export PATH =
Mariaa
Est-ce normal?
Mariaa
De plus, quand je fais écho à $ PATH, je n'obtiens aucun résultat ... je ne sais pas si c'est normal ou pas
Mariaa
@Mariaa comment réinitialiser le chemin d'accès au fichier ou à la commande.
jgr208
1
Assurez-vous de tester toutes les modifications en ouvrant une nouvelle fenêtre ou en faisant source ~/.bash_profilepour l'exécuter. Il est également recommandé de laisser la fenêtre et l'éditeur (où vous modifiez le fichier .bash_profile) ouverts au cas où votre modification ne fonctionnerait pas et vous empêcher d'ouvrir de nouvelles fenêtres pour modifier le fichier. Bien que vous puissiez toujours utiliser TextEdit ou un autre éditeur simple pour modifier le fichier.
Michael Durrant
8

Les modifications que vous avez apportées PATHsont probablement temporaires. Fermez la coque avec laquelle vous vous trouvez exitet rouvrez-la.

Si vous avez modifié un fichier qui définit le PATHpour les shells récemment ouverts, spécifiez le chemin d'accès complet aux commandes pour corriger tout ce que vous avez modifié (par exemple /usr/bin/vim).

Greg Hewgill
la source
salut! Merci (: j'ai essayé de faire ça mais ça ne marche pas. Je suppose que j'ai vraiment fait quelque chose de bizarre. Je me souviens avoir utilisé vim pour faire quelque chose avec PATH et puis tout s'est simplement gâché. Ugh, j'aurais aimé en savoir plus sur le langage informatique pour que cette chose soit triée!
Mariaa
est /usr/binou tout binrépertoire sur votre chemin? @Mariaa
jgr208
jgr208: voici mon chemin: / usr / local / sbin: / usr / local / bin: / usr / sbin: / usr / bin: / sbin: / bin
Mariaa
@Mariaa vous n'avez pas supprimé le bac ou quoi que ce soit et vous avez accès en lecture aux fichiers correctement?
jgr208
Cependant, je ne peux voir cela ou utiliser aucune commande lorsque j'entre PATH = / usr / local / sbin: / usr / local / bin: / usr / sbin: / usr / bin: / sbin: / bin ceci dans un nouveau terminal fenêtre .. sinon je ne peux utiliser aucune des commandes. Il ne les reconnaît pas: S
Mariaa