Je me demande pourquoi certains serveurs Ubuntu sont différents.
J'ai deux serveurs Ubuntu 12.04 qui exécutent une application Web. Aujourd'hui, j'ai essayé d'exécuter un fichier sh à partir de son dossier. Le serveur 1 peut exécuter Shell sans ./ mais le serveur 2 l'exige. Les deux ont l'autorisation 777.
Normalement, les scripts/programmes du dossier actuel ne sont pas exécutés sur linux/unix.
Les scripts/programmes ne sont exécutés que lorsque le script/programme se trouve dans le $PATH
variable.
Ainsi, lorsque le chemin n'est pas inclus dans le $PATH
variable vous devez donner le chemin du script/programme pour l'exécuter. Pour exécuter un script/programme dans le dossier actuel, vous devez le précéder de ./
qui désigne le dossier currect.
Veuillez vérifier que le $PATH
la variable sur les deux serveurs est la même.
Sur la base de votre commentaire sur le $PATH
variable Je soupçonne que l'un des scripts se trouve dans un dossier trouvé par le $PATH
variable alors que l'autre est dans un autre dossier.
Attention
C'est une mauvaise idée d'inclure ./
dans ton $PATH
. De cette façon, un utilisateur peut créer une commande malveillante (telle que ls
) et vous guider dans le dossier où il l'enregistre. Ensuite, vous exécuterez la version locale au lieu de la commande système (si le dossier actuel est placé dans $PATH
avant /bin
).