Quand je compile egxc par:
GCC x.c -o x
Pour exécuter le résultat, je dois écrire:
./x
Et juste en tapant:
x
Échoue avec ce message:
x: commande introuvable
Cela signifie que Linux ne le recherche pas dans le répertoire courant! Existe-t-il (j'en suis sûr) un problème raisonnable derrière ce comportement?
Réponses:
Parce que par défaut, le répertoire de travail actuel n'est pas dans la
PATH
variable.Il s'agit d'une mesure de sécurité / commodité. Si vous avez des binaires / scripts appelés par exemple
cd
,ls
etc. dans votre répertoire de travail actuel, il serait très ennuyeux si elles étaient gérées par défaut.la source
cd
dansbash
, il exécute une routine interne à bash et non/bin/cd
) à moins que vous avec `préfixer .`sl
vous avez fait une faute de frappe , vous avez le même problème. Seuls les répertoires approuvés doivent être dans$PATH
et les chemins d'accès relatifs comme ne.
sont jamais un répertoire approuvé pour un shell interactif.rm -r target
quand je voulais dire,rm -f target
il n'y a généralement aucune différence. Si je taperm -f target
quand je voulais direrm -r target
, soit il n'y a pas de différence, soit la suppression échoue. De plus, je pense que chaque fois avant de taperrm
, surtout si j'ajoute-f
ou-r
ou un glob - c'est une commande dangereuse par sa nature. Personne ne pense avantls
ing.Cela signifie que le répertoire courant n'est pas dans la variable $ PATH.
la source
Vous pouvez résoudre ce problème en ajoutant le répertoire actuel (représenté par un seul point) à la
PATH
variable d'environnement.La façon de le faire dépend du shell que vous utilisez.
si vous utilisez bash, vous pouvez ajouter la ligne
export PATH=$PATH:.
au.bashrc
fichier dans votre répertoire personnel.si vous utilisez csh ou tcsh, ajoutez la ligne
set PATH = ($PATH .)
au fichier .cshrc dans votre répertoire personnel.À mon humble avis, pour un ordinateur de bureau à domicile, c'est une chose acceptable à faire - en termes de sécurité.
la source