Comment omettre «./» lors de l'exécution de scripts sur le répertoire courant

10

Sur certains tutoriels sur Internet, ils peuvent exécuter un script sur le répertoire courant sans faire:

./script

Comment omettez-vous cela? J'utilise CentOS 5.6 x64. Je veux le faire comme ça

script

Aivan Monceller
la source
3
Notez que c'est presque toujours une mauvaise idée, en particulier pour l'utilisateur root.
David Schwartz
1
Quel est le but / l'histoire derrière le ./ de toute façon?
Pete
Je suis juste curieux de savoir pourquoi cela doit toujours avoir ./
Aivan Monceller
Le dernier commentaire pourrait être une question distincte à mon humble avis - c'est une chose importante à comprendre sur l'exécution des programmes en général!
rozcietrzewiacz
4
@Pete (et Aivan): Sous Linux / UNIX, le shell n'exécute des programmes que s'il connaît le chemin d'accès à ces derniers (que ce soit en utilisant un chemin que vous spécifiez ou en recherchant la variable PATH). Il ne suppose pas que vous souhaitez rechercher le répertoire actuel comme le fait Windows. Il recherche exactement ce que vous lui demandez de rechercher via la variable PATH. "." est une référence au répertoire courant. Ainsi, lorsque vous tapez «./script.sh», vous lui indiquez le chemin.
Kasius

Réponses:

26

N'importe quel:

  1. Ajoutez le répertoire de travail actuel à votre CHEMIN: PATH=${PATH}:.(cela est considéré comme un risque pour la sécurité)
  2. Ajoutez explicitement le chemin contenant votre script à la variable PATH (cela ne présente aucun risque de sécurité si l'accès en écriture à ce répertoire est limité)
  3. Mettez votre script à l'endroit approprié où PATH pointe déjà (~ / bin, / usr / local / bin, ...)

La dernière option est peut-être la meilleure.

Nils
la source