Script Bash: ce n' #!/bin/bash veut dire? [dupliquer]

cette question a déjà une réponse ici:

en écriture bash, que signifie #!/bin/bash à la première ligne ?

mise à jour : Existe-t-il une différence entre #!/bin/bash et #!/bin/sh ?

74
demandé sur Raptor 2012-12-14 07:03:29
la source

3 ответов

que l'on appelle un shebang , il indique au shell avec quel programme interpréter le script, une fois exécuté.

dans votre exemple, le script doit être interprété et exécuté par le shell bash .

quelques autres exemples de shebangs sont:

(De Wikipedia)

#!/bin/sh — Execute the file using sh, the Bourne shell, or a compatible shell
#!/bin/csh — Execute the file using csh, the C shell, or a compatible shell
#!/usr/bin/perl -T — Execute using Perl with the option for taint checks
#!/usr/bin/php — Execute the file using the PHP command line interpreter
#!/usr/bin/python -O — Execute using Python with optimizations to code
#!/usr/bin/ruby — Execute using Ruby

et quelques autres, je pense, du haut de ma tête, comme:

#!/bin/ksh
#!/bin/awk
#!/bin/expect

dans un script avec le shebang bash, par exemple, vous écririez votre code avec la syntaxe bash; alors que dans un script avec le shebang expect, vous le coderiez dans la syntaxe expectative, et ainsi de suite.

réponse à la partie mise à jour:

cela dépend de ce que /bin/sh indique réellement sur votre système. Souvent c'est juste un lien symbolique vers /bin/bash . Parfois les scripts portables sont écrits avec #!/bin/sh juste pour signifier que c'est un script shell, mais il utilise n'importe quel shell auquel il est fait référence par /bin/sh sur ce système particulier (peut-être qu'il pointe vers /bin/bash , /bin/ksh ou /bin/zsh )

91
répondu sampson-chen 2012-12-14 07:12:32
la source

En script bash, ce n' #!/bin/bash à la 1ère ligne signifie ?

dans le système Linux, nous avons shell qui interprète nos commandes UNIX. Maintenant il y a un certain nombre de shell dans le système Unix. Parmi eux, il y a un shell appelé bash qui est très très commun Linux et il a une longue histoire. C'est un shell par défaut dans Linux.

quand vous écrivez un script (collection de commandes unix et ainsi de suite) vous avez une option pour spécifier la coquille, il peut être utilisé. Généralement, vous pouvez spécifier quel shell il serait en utilisant Shebang (Oui c'est son nom).

Donc, si vous #!/bin/bash dans le haut de vos scripts puis vous dites votre système pour utiliser bash comme shell par défaut.

voici votre deuxième question: y a-t-il une différence entre #!/bin/bash et #!/ bin / sh ?

la réponse est oui. Lorsque vous dites #!/bin/ bash alors vous dites à votre environnement / os d'utiliser bash comme interpréteur de commandes. C'est codé en dur chose.

chaque système a son propre shell que le système utilisera pour exécuter ses propres scripts système. Ce shell système peut varier de OS à OS (la plupart du temps, il sera bash. Ubuntu utilise récemment dash comme shell système par défaut). Quand vous spécifiez #!/bin / sh puis le système utilisera son shell système interne pour interpréter votre les scripts shell.

visitez ce lien pour plus d'informations où j'ai expliqué ce sujet.

espérons que cela éliminera vos confusions...bonne chance.

12
répondu kta 2013-11-10 08:17:21
la source

quand les premiers caractères dans un script sont #! , qui est appelé le shebang . Si votre fichier commence par #!/path/to/something la norme est d'exécuter something et de passer le reste du fichier à ce programme comme une entrée.

cela dit, la différence entre #!/bin/bash , #!/bin/sh , ou même #!/bin/zsh est de savoir si les programmes bash, sh, Ou zsh sont utilisés pour interpréter le reste du fichier. bash et sh sont juste des programmes différents, traditionnellement. Sur certains systèmes Linux, ils sont deux copies du même programme. Sur D'autres systèmes Linux, sh est un lien vers dash , et sur les systèmes Unix traditionnels (Solaris, Irix, etc) bash est généralement un programme complètement différent de sh .

bien sûr, le reste de la ligne ne doit pas se terminer en sh. Il pourrait tout aussi bien être #!/usr/bin/python , #!/usr/bin/perl , ou même #!/usr/local/bin/my_own_scripting_language .

12
répondu Joshua D. Boyd 2016-12-27 19:42:41
la source

Autres questions sur