Sur un système linux, y a-t-il une différence pour lancer script.sh de ces deux manières différentes ?
Est-ce que c'est exactement la même chose ?
Gracias
Sur un système linux, y a-t-il une différence pour lancer script.sh de ces deux manières différentes ?
Est-ce que c'est exactement la même chose ?
Gracias
./script.sh s'attend à ce que ce fichier soit dans le répertoire courant, qu'il ait le bit execute activé et que la première ligne du fichier soit le chemin vers l'interpréteur pour commencer (ligne Shebang).
bash script.sh signifie que vous invoquez bash et passez le contenu du fichier à exécuter (interpréter) comme des commandes bash. De cette façon, votre fichier n'a pas besoin d'être exécutable et possède une ligne shebang.
Si les conditions pour ./script.sh sont remplies, les deux invocations mènent au même résultat.
Pour que la première forme fonctionne, le fichier doit avoir le bit exécutable activé, ensuite il doit avoir un fichier shebang qui spécifie l'interpréteur qui sera utilisé.
Donc oui, les deux formulaires sont identiques (en ce qui concerne ce qui sera interprété).
Pour une leçon d'histoire, voir este
L'implémentation actuelle de l'analyse syntaxique she-bang dans le noyau linux est la suivante aquí
Je ne pense pas que ce soit exactement la même chose.
D'après ce que je comprends, il suffit d'exécuter un script avec ./script.sh
sur le actuel coquille. Il n'est pas nécessaire que ce soit un bash (Bourne Again SHell) que vous exécutez, ce peut être n'importe quel shell installé sur votre système.
Si vous exécutez un script avec bash script.sh
vous indiquez au système que vous voulez que le script soit exécuté explicitement avec un shell bash.
Vous pouvez voir quels shells sont disponibles pour votre système en appelant :
$ cat /etc/shells
# /etc/shells: valid login shells
/bin/sh
/bin/dash
/bin/bash
/bin/rbash
Script.sh peut être appelé script.n'importe quoi comme indiqué sur le post du tricot dans bully, le script est identifié par
#!/whatever/it/is
en cours d'exécution bash ./script.something signifie que vous lui dites d'exécuter le script en utilisant bash et cela peut retourner des erreurs plutôt que de s'exécuter aussi bully oublié
#!/usr/bin/perl
ainsi vous pourriez avoir un perl script appelé script.sh
cat perl.sh
#!/usr/bin/perl
print "Hello World\n";
:~/Documents$ ./perl.sh
Hello World
~/Documents$ bash ./perl.sh
Warning: unknown mime-type for "Hello World\n" -- using "application/octet-stream"
Error: no such file "Hello World\n"
Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.