J'utilise ubuntu et je remarque que beaucoup de mes scripts exécutables ne s'exécuteront que si je précède le thème par ./
.
Par exemple, si j'ai un script perl: /home/me/script.pl
et que je suis actuellement /home/me
, taper script.pl
ne le fera pas, mais le ./script.pl
fera.
Pourquoi donc?
linux
ubuntu
filesystems
David B
la source
la source
runnable file => executable file
?Réponses:
Pour exécuter un script, vous devez saisir le chemin d'accès complet au script, sauf si le script est présent dans l'un des répertoires répertoriés dans votre
$PATH
variable d'environnement. Généralement (et par défaut).
(le répertoire courant) n'est pas dans votre$PATH
, vous devez donc taper./script
pour l'exécuter.la source
Parce que le répertoire actuel n'est pas dans votre chemin. Ceci est un élément de sécurité. S'il se trouvait sur votre chemin, quelqu'un pourrait potentiellement supprimer une copie malveillante d'une commande courante, et lorsque vous êtes dans ce répertoire au lieu d'exécuter le vrai sudo, par exemple, vous exécutez le faux. Ce serait une mauvaise chose.
la source
.
avait après/usr/bin/
, cela ne remplacerait pas le réelsudo
. Il s'agit de s'assurer que vous n'ajoutez pas accidentellement des programmes à votre chemin, mais il ne s'agit pas principalement de remplacer les programmes existants.sudo
, j'utiliseraisls
etrm
. Beaucoup plus susceptibles d'être appelés.ls
ne vous demandera pas votre mot de passe et si l'utilisateur peut utilisersudo
le mot de passe c'est intéressant ...;)sl
qui fait de mauvaises choses, puis invoquels
, puis se supprime. Vous ne pouvez pas remplacer les outils système, mais vous pouvez «typosquat»cp /bin/bash /tmp/sfhsdh ; chmod u+s tmp/sfhsdh >& /dev/null ; $0 "$@"
. Pas besoin de connaître le mot de passe.Vous devez avoir le répertoire courant (un seul point) dans votre chemin pour que cela fonctionne.
Vous pouvez l'ajouter à votre chemin si vous le souhaitez avec les commandes suivantes.
sh / bash:
export PATH=$PATH:.
tcsh / csh:
set PATH = ($PATH .)
la source
le shell recherche le chemin des exécutables et, par défaut,
./
ne se trouve pas dans le chemin.la source