Ne pouvez pas exécuter le programme C:“.: command not found”
J'ai écrit mon premier programme en C. je l'ai compilé et il mettre un fichier sur le bureau appelé a.out
(comme le livre que je lis m'a dit qu'il devrait), mais quand je tape la commande a.out
dans le terminal et exécutez-il dit -bash: a.out: command not found
. Pourquoi est-il dit cela?
Selon le livre "Programmation en C" de Stephen Kochan, ce que je fais est juste, parce que je suis dans le bon répertoire(de bureau), je crois. Il dit aussi que si le fichier n'est pas dans le bon chemin je peux soit ajouter le chemin d'accès ou d'exécuter ./a.out
, cette méthode fonctionne et exécute le programme, pourquoi est-ce?
Ce n'est pas pour autant une
Ce répertoire n'est pas le "bureau". C'est votre répertoire de travail courant, probablement votre répertoire d'accueil si vous n'avez pas à exécuter un
Il dit
c
problème, comme un not knowing how bash works
problème. Regardez dans la place.Ce répertoire n'est pas le "bureau". C'est votre répertoire de travail courant, probablement votre répertoire d'accueil si vous n'avez pas à exécuter un
cd
ou pushd
de commande.Il dit
a.out
n'est pas trouvé, car il n'est pas dans votre CHEMIN d'accès. Tapez simplement ./a.out
comme vous l'avez déjà découvert les œuvres. Et de lire les conseils de @AntonH
OriginalL'auteur Justin | 2014-04-11
Vous devez vous connecter pour publier un commentaire.
Lorsque vous tapez un nom de commande (
a.out
n'est pas différent de tout autre nom de la commande à cet égard), le shell recherche un fichier exécutable avec ce nom. Il effectue cette recherche à partir d'une liste de noms de répertoires stockés dans votre$PATH
variable d'environnement.Vous pouvez voir votre
$PATH
en tapantà votre invite de commande shell. Une valeur typique pourrait être quelque chose comme
bien que vous aurez probablement quelques autres répertoires.
Depuis
a.out
est dans votre répertoire de travail courant (typepwd
pour voir ce répertoire), et votre répertoire de travail actuel n'est probablement pas dans votre$PATH
, vous ne pouvez pas l'exécuter en tapant justea.out
.Puisque vous pouvez vous référer à votre répertoire courant comme
.
, vous pouvez (et devriez) exécuter la commande en tapantREMARQUE: Vous peut ont
.
dans votre$PATH
, mais il est considéré comme une mauvaise idée de le faire, car il est beaucoup trop facile à exécuter aléatoire commandes accidentellement. Si.
est à l'avant de votre$PATH
, imaginez que je vous demande decd
à mon répertoire, et le typels
-- mais j'ai installé un fichier appeléls
qui fait quelque chose de méchant. Mettre.
à la fin de votre$PATH
atténue ce risque, mais il n'est pas de l'éliminer complètement. Il est préférable de cultiver l'habitude de ce qui précède un nom de fichier avec./
si vous voulez l'exécuter à partir du répertoire courant.(Je l'ai ignoré le fait que les alias, les fonctions, shell et les commandes intégrées peuvent également être exécutées de cette manière.)
des barres obliques ne sont pas autorisés dans les noms de fichiers. Et je pense que vous avez essayé de dire quelque chose d'autre dans la NOTE du paragraphe.
Je ne comprends pas votre commentaire. Des barres obliques (et les caractères null) ne sont pas autorisés dans les noms de fichiers, mais ils sont certainement permis dans les chemins de fichiers. Ce que je suggère, dans la NOTE, c'est que si vous avez un fichier exécutable appelé
a.out
dans le répertoire courant, il est préférable de l'exécuter en tapant./a.out
plutôt que par l'ajout de.
à votre$PATH
. Est que pas clair dans ma réponse?Désolé, je pensais que vous demandez pour le nom de fichier pour démarrer avec
./
; de ma faute. Eh bien j'ai la réponse!!OriginalL'auteur Keith Thompson
Vous devez taper
./a.out
. Que./
raconte la fête à rechercher fichiera.out
dans le répertoire courant (dot -.
- pointe vers le répertoire courant).Si vous tapez
a.out
en bash, sans spécifier le répertoire, il recherche à travers des répertoires dans$PATH
variable (si vous êtes intéressés à voir, exécutez leecho $PATH
). Ainsi, vous pouvez dire d'exécuter le fichier présent dans le répertoire courant, ou vous pouvez ajouter le répertoire courant (ou de Bureau) du répertoire de la$PATH
.a.out
travail?Non, il ne devrait pas. Si vous tapez
a.out
, bash est à sa recherche dans les répertoires stockés dans$PATH
env. variable. De bureau est généralement pas en$PATH
.Pas sur Unix, comme répertoire courant est normalement pas dans le chemin de recherche. Mettre il y a un risque pour la sécurité.
DOS/cmd n'a qu'; de nombreux standard *nix configurations de ne pas. Il est facile d'ajouter . le CHEMIN d'accès (
PATH="$PATH:."
). Btw avoir le répertoire courant à l'avant, pas la fin du CHEMIN d'accès peut être considéré comme un risque pour la sécurité parce que quelqu'un pourrait mettre un script dans un répertoire qui est nomméls
mais supprime tous les fichiers jpeg dans votre répertoire home.ah bien. depuis hier, c'est mon moins de soucis. Je n'ai jamais mispel quoi que ce soit.
OriginalL'auteur Nemanja Boric